StartMVC开发手册

可以快速上手的开发文档

手册目录

配置文件

配置文件

StartMVC 框架的配置系统提供了一种简单、灵活的方式来管理应用程序的各种配置。配置系统支持多环境配置、点语法访问、自动按需加载等特性,使开发者能够轻松管理和访问应用配置。

配置文件

配置文件位于应用的 config 目录下,支持以下类型:

  • 基础配置文件 - common.php:包含应用的基本配置
  • 环境配置文件 - {ENV}.php:根据环境变量 ENV 加载对应的配置文件
  • 本地配置文件 - local.php:开发者个人配置,通常不纳入版本控制
  • 模块配置文件 - {module}.php:特定模块的配置文件

StartMVC 自带了 cache(缓存配置)、common(系统配置)、database(数据库配置)、pagination(分页配置)、route(路由配置)、middleware(中间件配置)等配置文件。

配置加载机制

配置系统采用自动按需加载机制:

  • common.php 配置在首次使用配置系统时自动加载
  • 其他配置文件在首次被访问时自动加载(无需手动预加载)
  • 所有加载过的配置都会被缓存,避免重复加载

配置加载优先级:local.php > {ENV}.php > common.php

使用方法

助手函数

框架提供了 config() 助手函数,是访问配置的最简单方式:

// 获取所有配置
$allConfig = config();

// 获取特定配置项(自动加载配置文件)
$appName = config('app_name');
$dbHost = config('database.host');

// 设置配置
config('site.title', '我的网站');

// 批量设置配置
config([
 'site.title' => '我的网站',
 'site.description' => '网站描述'
]);

// 显式加载配置文件(可选,向后兼容)
$dbConfig = config('@database');


config() 函数的实现具有以下特点:

  1. 当不带参数调用时,返回所有配置(Config::get()
  2. 当参数以 @ 开头时,会调用 Config::load() 方法按需加载指定的配置文件
  3. 当参数是数组时,会循环设置多个配置项
  4. 当有两个参数时,会设置单个配置项
  5. 其他情况下,获取指定的配置项

直接使用 Config 类

也可以直接使用 Config 类:

use startmvc\core\Config;

// 获取配置
$host = Config::get('database.mysql.host');

// 提供默认值的用法 - 当配置项不存在时返回默认值
$host = Config::get('database.mysql.host', 'localhost');

// 设置配置
Config::set('app.debug', true);

// 检查配置是否存在
if (Config::has('redis.port')) {
 // 使用配置
}

// 加载特定配置文件
$redisConfig = Config::load('database');

// 获取配置分组
$dbSettings = Config::group('database');


点语法

配置系统支持使用点语法访问嵌套配置:

// 访问数据库配置
$driver = config('database.driver'); // 返回 'mysql'
$mysqlHost = config('database.connections.mysql.host'); // 返回 'localhost'
$mysqlPort = config('database.connections.mysql.port'); // 返回 3306


示例配置文件

// config/common.php
return [
 'debug' => true,	//Debug模式,开发过程中开启,生产环境中请关闭
 'trace' => true,	//是否开启调试追踪,生产环境中请关闭
 'timezone' => 'Asia/Shanghai',	//系统时区
 'url_suffix' => '.html',	//URL后缀
 'default_module' => 'home',	//默认模块
 'default_controller' => 'Index',	//默认控制器
 'default_action' => 'index',	//默认方法
 'urlrewrite' => true,	//是否Url重写,隐藏index.php,需要服务器支持和对应的规则
 'session_prefix' => '',	//Session前缀
 'cookie_prefix' => '',	//Cookie前缀
 'locale' => 'zh_cn',	//指定默认语言,小写
 'db_auto_connect' => true,	//是否开启数据库自动连接
 'theme' => '',	//指定模板子目录,方便多风格使用,为空时模板文件在view下
];

// config/database.php
return [
 'default' => 'mysql',
 'mysql' => [
 'host' => 'localhost',
 'database' => 'startmvc',
 'username' => 'root',
 'password' => '',
 'charset' => 'utf8mb4'
 ]
];

// config/cache.php
return [
 'drive' => 'file', //默认驱动支持file,redis缓存
 'file'=> [
 'cacheDir'=>'cache/',
 'cacheTime'=>3600
 ],
 'redis' => [
 'host' => '127.0.0.1',
 'port' => 6379,
 'password' => '',
 'database' => 0,
 'cacheTime'=>3600
 ],
];


使用示例

// 获取系统调试模式
$debug = config('debug');

// 获取数据库连接信息(自动加载 database.php)
$db = config('database'); $dbDriver = config('database.driver'); $dbHost = config('database.connections.mysql.host'); $dbName = config('database.connections.mysql.database'); // 设置调试模式 config('debug', false); // 检查配置是否存在 if (Config::has('database.connections.mysql.port')) { $port = config('database.connections.mysql.port'); } else { config('database.connections.mysql.port', 3306); } // 获取数据库配置分组 $allDbSettings = Config::group('database'); // 获取缓存配置(自动加载 cache.php) $cacheDriver = config('cache.drive'); $redisHost = config('cache.redis.host');