优先级:惯例配置>应用配置>模块配置>动态配置
惯例配置:核心框架内置的配置文件,无需更改。
应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。
模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。
动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。
打开惯例配置文件/thinkphp/convention.php,添加配置项:
// 测试项
'test' => '我是惯例配置中的内容',
打开应用配置文件/application/config.php,添加配置项:
// 测试项
'test' => '我是应用配置中的内容',
创建模块配置文件/application/index/config.php,添加配置项:
// 测试项
'test' => '我模块配置中的内容',
最后,在 默认控制器/application/index/controller/Index.php文件的index()方法中动态设置:
class Index{
public function index()
{
Config::set('test','我是动态配置中的内容');
}
}
每一次的添加设置配置项,都用dump(Config::get(‘test’));方式去打印输出看下,会发现每次的设置,都会高于前一次的优先级,打印的内容都会以优先级高的为主。
如果应用配置中还有其他配置,那么优先级如下:

注释掉动态配置和模块配置,将配置级别恢复到应用配置级别,因为独立配置项都是二级配置项,所以需要修改应用配置项中的内容为:
// 测试项
'info' => ['test' => '我是应用配置项中的内容'],
查看方式也对应修改为:dump(Config::get(‘info.test’));
创建独立配置文件/application/extra/info.php,写入:
<?php
return [
// 测试项
'test' => '我是独立配置项中的内容',
];
?>
查看下配置项的输出,发现,确实是独立配置的优先级高于应用配置。
修改应用配置文件中的app_status项的值为home,创建场景配置文件/application/home.php,写入:
<?php
return [
// 测试项
'info' => ['test' => '我是场景配置项中的内容',],
];
?>
再查看下配置项的输出,发现,确实是场景配置的优先级高于独立配置。
这种关系,也适用于模块配置:
