Config配置文件
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');
// 获取数据库连接信息
$dbConfig = 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');
// 获取缓存配置
$cacheDriver = config('cache.drive');
$redisHost = config('cache.redis.host');