ThinkPHP框架总结之配置及使用:
TP框架提供了灵活的全局参数变量配置功能,使用高效的返回php数组定义,支持惯例、公共、模块、调试及动态参数配置功能。下面会结合例子来介绍最常用的默认PHP数组配置方式(xml/json/ini/yaml方式不进行介绍),如何读取数组配置及动态配置,对于拓展配置实际用的不多,这里不赘述,感兴趣的读者可自行查资料,。
在了解相关的配置前,我们有必要先了解下,在ThinkPHP中配置文件的加载顺序。一般的加载顺序是:惯例配置-》应用配置-》模块配置,中间未考虑可选的模式配置、调试配置以及状态配置。注意:因为后面的配置会覆盖前面的同名配置,所以配置的生效顺序是从右往左哦。
惯例配置:
惯例配置文件位于TP框架库中,位置是ThinkPHP/Conf/convention.php,里面配置了针对大多应用的基础配置。
应用配置:
应用配置文件位于Project/Common/Conf/config.php(针对上一篇项目而定的位置,下同),也就是调用加载所有模块之前首先加载的全局通用文件。
模块配置:
模块配置文件的位置Project/应用模块/Conf/config.php,例如:Project/Admin/Conf/config.php。一般一个应用包含多个模块,但至少有一个模块,简单理解为运行到模块,即为加载该文件了。
PHP数组配置:
<?php
return array (
/* 图片上传路径配置 */
'IMG_SAVE_URI' => 'http://192.168.10.123/images/',
/*模块划分 */
'MODULE_ALLOW_LIST' => array (
'Admin'=>'后台',
'Mobile'=>'移动',
'Wxapp'=>'微信',
'Website'=>'官网'
) // 允许的运行的模块
)
;
上面的配置是在Project/Mobile模块下的Conf/config.php文件,也就是上面的模块配置了,下面会读取该配置参数的值。注意:配置参数不区分大小写,因为最后都会转为小写,建议统一为大写格式。
如何读取配置:
在TP框架中,支持使用C函数来读取各种配置参数,不论是系统预定配置还是自定义配置,同时也可以指定参数配置的默认值等。
读取的接口:
// 用户头像保存接口(一维数组)
public function headerSave() {
// ...
// 读取配置的图片保存路径(一维数组)
$header_uri= C('IMG_SAVE_URI');
echo $header_uri;
// ...
}
返回的值:
// 允许运行的模块接口(二维数组)
public function allowModules() {
header("Content-Type:text/html;charset=utf-8");
// ...
// 读取允许运行的模块(二维数组)
$allowModule= C('MODULE_ALLOW_LIST.Mobile');
echo $allowModule;
// ...
}
返回的值:
如果配置未设定值,那么返回为null,另外,读取的时候也可以为其指定默认值(这里不赘述)。
动态配置参数:
上面的参数配置都是预定义配置,这里同样使用C函数在程序运行中动态的修改配置参数的值,这种情况也比较常见,例如:有时我们需要动态修改缓存数据的缓存时间,那么怎么实现哪?很简单,具体入下(包含一、二维数组修改):
// 动态修改配置接口
public function dynamicSet() {
header("Content-Type:text/html;charset=utf-8");
// 一维数组
// 默认的数据缓存时间
$defaultTime= C('DATA_CACHE_TIME');
echo $defaultTime.'</br>';
// 修改的数据缓存时间
C('DATA_CACHE_TIME',60);
$updateTime= C('DATA_CACHE_TIME');
echo $updateTime.'</br>';
// 二维数组
// 默认的允许运行模块
$defaultModule= C('MODULE_ALLOW_LIST.Mobile');
echo $defaultModule.'</br>';
// 修改的允许运行模块
C('MODULE_ALLOW_LIST.Mobile','移动App');
$updateModule= C('MODULE_ALLOW_LIST.Mobile');
echo $updateModule;
}
返回的结果:
技术讨论群:489451956(新)