配置文件加载顺序:(从大到小)
动态配置 / 扩展配置 / 模块配置 / 场景配置 / 调试配置 / 模式配置 / 公共配置 / 默认配置
公共配置 application/common/conf/config.php
惯例(默认)配置/应用配置
其中惯例配置((在thinkphp里的convention.php)在开发中不允许去修改,否则对后期的框架升级和维护都造成困难,除了数据库配置需要自定义。
但是我们可以在应用配置里修改,使得配置在惯例配置中生效。
先在public文件夹下的index.php文件中增加定义配置文件目录
//定义配置文件目录
define('CONF_PATH',__DIR__.'/../conf/');
再在application文件夹下建立conf文件夹,新建一个config.php文件,并在里面增加修改配置,比如
'[email protected]',
'app_author' => 'bulb'
];
?>
用下面的图更好理解 ,conf1就像是惯例配置,conf2就是应用配置,然后键名相等,值替换。
应用配置/扩展配置
如果有扩展操作会默认的替换掉应用配置
1.在刚刚建好的conf文件夹中新建一个extra文件夹(必须要命名为extra),再在这个文件夹下面新建一个email.php,在里面添加配置。
'[email protected]',
'name' => 'bbb'
];
?>
2. 对数据库的配置也支持放在extra文件夹下(如果直接放在conf文件夹下面也行)
扩展配置优先级高于应用配置
我们在conf文件夹下的config.php修改一下数据库的名字
然后会发现database没有改变,只是位置提前了。database.php配置会替换掉config.php
场景配置
在不同的环境使用不同的配置。
首先现在应用配置config.php文件中加一句
'app_status'=>'home'; //或者是office
然后在conf文件夹下建立两个文件,home.php和office.php
之后可以在里面添加不同的配置
不过场景配置需要记住一点,如果我们要配置数据库的话我们需要配置数据库的所有项(这可能是thinkphp5的一个bug)否则之前的配置都会失效。
模块配置
以上的所有配置对所有模块都会直接更改,无法做到每个模块使用单独的配置。
conf目录下的配置对整个模板都有效,但是在conf文件夹下新建个目录,目录下只对和目录名相同的模块有效。
动态配置
对当前控制器或某个方法里面进行动态配置改变,配置项目值只在当前控制器或方法里有效。
--------------------------------------------
--------------------------------------------
如何配置.env文件使配置开发环境更方便
首先在.env文件里配置status,如果没有配置会默认显示自己设置的prod环境(这里.env设置的是dev环境)
接下来把根目录下的conf文件夹里的测试文件都删除,创建一个config.php文件,让它在所有的应用中都有效
记住先引用Env的类
再创建一个dev.php
(如果没有配置系统环境变量我们就默认用dev开发环境,正式环境我们只需要改变config里dev就行了)
再查看配置
如果我们现在要使用第测试二个环境,我们在conf下新建一个test.php
表示现在使用的配置文件或者开发环境是test,我们只需要进入.env文件里修改一下status为test即可
类似我们再创建线上prod环境等等。
我们还可以在.env里配置以组的方式配置数据库,直接在.env文件里修改一些配置
先要在conf下建立一个database.php文件
这样就能在开发环境到测试环境或其他环境转换时,只要保证每个环境下的.env文件是正确的就行了