## 独立配置文件
>[danger] 配置文件支持分离(也称为扩展配置),只需要在公共配置文件配置`extra_config_list`参数(V5.0.1版本已经废除该写法)。
例如,不使用独立配置文件的话,数据库配置信息应该是在`config.php`中配置如下:
~~~
/* 数据库设置 */
'database' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
],
~~~
如果需要使用独立配置文件的话,则首先在config.php中添加配置:
~~~
'extra_config_list' => ['database'],
~~~
定义之后,数据库配置就可以独立使用`database.php`文件,配置内容如下:
~~~
/* 数据库设置 */
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'thinkphp',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => false,
],
~~~
如果配置了`extra_config_list`参数,并同时在`config.php`和`database.php`文件中都配置的话,则`database.php`文件的配置会覆盖`config.php`中的设置。
独立配置文件的参数获取都是二维配置方式,例如,要获取`database`独立配置文件的`type`参数,应该是:
~~~
Config::get('database.type');
~~~
要获取完整的独立配置文件的参数,则使用:
~~~
Config::get('database');
~~~
## 自动读取扩展配置
>[success]#### 版本要求`V5.0.1`
`5.0.1`以上版本支持自动读取扩展配置文件(`extra_config_list`配置参数废弃),只需要将扩展配置文件放入`application/extra`目录,即可自动读取。
> 自动读取的配置文件都是二级配置参数,一级配置名称就是扩展配置的文件名。
模块也可以支持自己的扩展配置文件,只需要放入 `application/模块名/extra`下面就可以自动加载。
系统默认加载的独立配置文件不在此列,包括:
|文件名|描述|
|---|---|
|config|应用或者模块配置文件|
|database|数据库配置文件|
|tags|行为定义文件|
|场景名|应用场景配置文件|
> 如果你更改了`CONF_PATH`,那么扩展配置文件目录应该是`CONF_PATH/extra`,模块配置目录则变成 `CONF_PATH/module/`,模块的扩展配置目录则变成`CONF_PATH/module/extra`。