配置目录
配置文件
1.应用配置文件 application\config.php
2.模块配置文件 application\index\config.php
3.index.php中自定义配置目录
define('CONF_PATH',__DIR__.'/../config/');
config\config.php
在config目录中新建index\config.php,对应index模块。
在config目录中新建扩展配置目录extra及自定义文件,文件名就是配置名,内容是配置值。
也可以在模块新建扩展配置项,eg:index\extra\test.php
无论采用哪一种配置目录,最终都会与应用配置文件合并输出
配置文件格式
1.Array数组键值对 默认格式
2.ini名值对 入口文件:define('CONF_EXT','.ini')
3.xml标签对 入口文件:define('CONF_EXT','.xml')
4.josn对象属性名值对 入口文件:define('CONF_EXT','.json')
场景配置
在不同的环境下,使用不同的配置项。
实现步骤:
1.修改应用或模块配置文件中的'app_status',将值设置为场景名称,如:home
2.在与该配置文件同级的目录下,创建于场景名称同名的配置文件,如:home.php
3.再次执行,将会自动根据场景配置文件(home.php),更新当前应用的配置文件。
模块配置
1.模块可以有自己的配置文件,独立配置文件和场景配置文件
2.模块配置的优先级高于应用配置,相同配置项会覆盖掉应用中的配置项
3.模块默认配置文件名:config.php
4.模块默认独立配置文件有两个:database.php validate.php
5.模块场景配置文件名,根据'app_status'参数值确定
加载其他位置的配置文件
1.如果配置文件是php文件
\think\Config::load(APP_PATH.'完整文件名'); //使用绝对路径加载,默认返回数组
2.如果配置文件是其他格式:ini、xml、json等
\think\Config::parse(APP_PATH,'完整文件名','ini'); //使用绝对路径加载,默认返回数组
注意:读取其他配置的文件,都是冬天加载,需要在控制器中的方法中执行加载
namespace app\index\controller;
class Index
{
public function index()
{
\think\Config::parse(APP_PATH.'../config/newconf/conf.ini','ini');
dump(\think\Config::get());
}
}
如何正确读取配置项
1.读取配置项
* 类方法 Config::get('配置参数'),参数为空则是获取全部配置项
* 使用助手函数 config('配置参数'),参数说明和Config::get()完全一样
* 读取二级配置项,参数与值之间用 . (点)进行连接
2.判断某配置项是否存在
* 类方法 Config::has('配置参数'); //返回布尔值
* 助手函数 config('?配置参数'); //返回布尔值
动态配置 如何正确设置配置项
1.类方法 \think\Config.php
* 逐个配置 Config::set('配置参数','参数值');
* 批量配置 Config::set(数组);
* 二级配置 Config::set('配置参数',数组);
2.助手函数 config()
* 逐个配置 config('配置参数','参数值');
* 批量配置 config(数组);
* 二级配置 config('配置参数',数组);
独立配置文件
1.用户自定义的独立配置文件必须放在应用或模块下面的extra目录下面
2.默认独立配置文件database.php[数据库],validate.php[验证规则]既可以
放在extra下面,也可放在与应用或模块同级的目录下面。如果放在extra目录
下面,优先级大于放在应用或模块的同级目录下面
3.文件名就是配置名称,文件返回一个数组
4.独立配置全部是二级配置
配置文件加载的优先级
惯例配置 < 应用配置 < 模块配置 < 动态配置(级别最高)
在应用配置和模块配置中:应用配置 < 独立配置 < 场景配置
配置项的作用域
1.作用域与命名空间的概念类似,就是配置项的可见范围
2.作用域的表现形式上与二维数组是一样的
3.切换作用域使用 Config::range('作用域')
4.可以将独立配置项归纳到作用域进行管理,也可以动态设置
namespace app\index\controller
use Think\Config;
class Index
{
public function index()
{
//设置一组配置项
$config = [
'user_name'=>'user',
'user_age'=>'18',
];
//批量设置,写入user作用域
Config::set($config,'user');
//输出全部配置项,作用域相当于二级配置项的名称
dump(Config::get());
//用数组的方式来配置作用域的值
Config::set('user.user_name','php');
//查看设置好的值
dump(Config::get('user.user_name'));
//切换作用域:Config::range()
Config::range('_sys_');
}
}