一、配置格式
1、PHP数组定义
默认所有配置文件的定义格式均采用返回PHP数组的方式,配置参数不区分大小写。
如果使用二维数组来配置更多的信息,则二级参数配置区分大小写。格式为:
//项目配置文件return array(
'DEFAULT_MODULE' => 'Index', //默认模块
'URL_MODEL' => '2', //URL模式
'SESSION_AUTO_START' => true, //是否开启session
'USER_CONFIG' => array(
'USER_AUTH' => true,
'USER_TYPE' => 2,
'USER_TYPE' => 2,
),
//更多配置参数
//...
);
2、其他格式
也可以采用
yaml/json/xml/ini格式
的配置文件支持。在应用入口文件中定义应用的配置文件的后缀,定义后,应用的配置文件(包括模块的配置文件)后缀都统一采用该后缀。例如:
define('CONF_EXT','.ini'); // 配置自定义配置格式(后缀)
3、自定义格式
define('CONF_EXT','.test'); // 配置自定义配置格式(后缀)
define('CONF_PARSE','parse_test'); // 对应的解析函数,CONF_PARSE定义的解析函数返回值必须是一个PHP索引数组。
假设我们的自定义配置格式是类似
var1=value1&var2=value2
之类的字符串,那么parse_test定义如下:function parse_test($str){
parse_str($str,$config);
return (array)$config;
}
二、配置加载
应用的配置文件是自动加载的,加载的顺序是:惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置
1、惯例配置
位于
ThinkPHP/Conf/convention.php
2、应用配置
默认位于
Application/Common/Conf/config.php
调用所有模块之前都会首先加载的公共配置文件
3、模式配置(可选)
如果使用了普通应用模式之外的应用模式,可以为应用模式单独定义配置文件,仅在运行该模式下面才会加载。
文件命名规范是:
Application/Common/Conf/config_应用模式名称.php
。4、调试配置(可选)
如果开启调试模式的话,则会自动加载框架的调试配置文件(位于
ThinkPHP/Conf/debug.php
)和应用调试配置文件(位于Application/Common/Conf/debug.php
)5、状态配置(可选)
每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件。
如: 在公司和家里分别设置不同的数据库测试环境,可以这样处理:
在入口文件中定义
define('APP_STATUS','office');
自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php
)。// 公司define('APP_STATUS','home');
自动加载该状态对应的配置文件(位于Application/Common/Conf/home.php
)。 // 家6、模块配置
位于
Application/当前模块名/Conf/config.php
每个模块会自动加载自己的配置文件。
如果使用了普通模式之外的其他应用模式,可以为应用模式单独定义配置文件,仅在运行该模式下面才会加载
命名规范为:
Application/当前模块名/Conf/config_应用模式名称.php
。 支持独立的状态配置文件,命名规范为:
Application/当前模块名/Conf/应用状态.php
。三、读取配置
统一使用系统提供的C方法来读取已有的配置。
用法:C('参数名称')
说明:
1)配置参数不区分大小写,建议大写。名称只能是数字、字母、下划线,不允许“.”和特殊字符;
2)配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数已经生效过期了。
1、读取配置
eg. 读取当前的URL模式配置参数:
$model = C('URL_MODEL'); //
如果url_model
尚未存在设置,则返回NULL。2、读取默认配置:可以在读取的时候设置默认值
eg.
C('my_config',null,'default_config'); //
如果my_config尚未设置的话,则返回default_config字符串。
3、读取二维配置
C('USER_CONFIG.USER_TYPE');
//获取用户配置中的用户类型设置
四、动态配置
用法:C('参数名称','新的参数值')
说明: 动态配置赋值仅对当前请求有效,不会对以后的请求造成影响。
eg.
C('DATA_CACHE_TIME',60);
// 动态改变缓存有效期
五、扩展配置
支持自动加载额外的自定义配置文件,并且配置格式和项目配置一样。
用法:
'LOAD_EXT_CONFIG' => '文件1',
'文件2'
,
'文件3'……(多个文件用逗号隔开)。
六、批量配置
用法:
$config =
array('config1'=>'val1','config2'=>'val2',...) // config是一个关联数组 键值就是配置参数 值就是配置值
C($config); // 合并配置参数到全局配置