配置格式
ThinkPHP支持多種格(ge)式的配(pei)置格(ge)式,但最(zui)終都是(shi)解析(xi)為PHP數(shu)組的方式。
PHP數組定義
返回PHP數(shu)組的(de)方式是默認的(de)配置定義(yi)格式,例(li)如:
//項目(mu)配置文件
return [
// 默認模塊名
'default_module' => 'index',
// 默認控制器名
'default_controller' => 'Index',
// 默認操作名
'default_action' => 'index',
//更多配置參數(shu)
//...
];
配置(zhi)參(can)數名(ming)不(bu)區分大(da)小(xiao)寫(xie)(xie)(因為無論大(da)小(xiao)寫(xie)(xie)定(ding)義都會轉換(huan)成小(xiao)寫(xie)(xie)),新版的(de)建議是(shi)使用(yong)小(xiao)寫(xie)(xie)定(ding)義配置(zhi)參(can)數的(de)規范。
還可(ke)以(yi)在配置文件中可(ke)以(yi)使用二維數組來配置更多(duo)的信息(xi),例如:
//項目配置文件
return [
'cache' => [
'type' => 'File',
'path' => CACHE_PATH,
'prefix' => '',
'expire' => 0,
],
];
其他配置格式支持
默認方式為PHP數組方式定義配置文件,你可以在入口文件定義CONF_EXT常量來更改為其它的配(pei)置類型:
// 更改配置格式為(wei)ini格式
define('CONF_EXT', '.ini');
配置后,會自動解析支持的配置類型,包括.ini、.xml、.json 和 .php 在內的格(ge)式支持(chi)。
5.0版本開始(shi)支(zhi)持(chi)yaml配置格式支(zhi)持(chi)
ini格式配置示例:
default_module=Index ;默認模塊
default_controller=index ;默認控制器
default_action=index ;默認操作
xml格(ge)式(shi)配置示例:
<config>
<default_module>Index</default_module>
<default_controller>index</default_controller>
<default_action>index</default_action>
</config>
json格式配置示例:
{
"default_module":"Index",
"default_controller":"index",
"default_action":"index"
}
二級配置
配(pei)(pei)置(zhi)(zhi)參數支持(chi)二級(ji),例如(ru),下(xia)面是一(yi)個二級(ji)配(pei)(pei)置(zhi)(zhi)的設置(zhi)(zhi)和(he)讀取示例:
$config = [
'user' => [
'type' => 1,
'name' => 'ThinkPHP',
],
'db' => [
'type' => 'mysql',
'user' => 'root',
'password' => '',
],
];
// 設置(zhi)配置(zhi)參數
Config::set($config);
// 讀取二(er)級配置參數
echo Config::get('user.type');
// 或者使用助手函數
echo config('user.type');
系統不支持二級以上的配置參數讀取,需要手動分步驟讀取。
有作用域的情況下,仍然(ran)支(zhi)持二級配(pei)置的操作。
如(ru)果采用其(qi)他格式(shi)的配置文件的話,二(er)級配置定義方(fang)式(shi)如(ru)下(xia)(以(yi)ini和xml為(wei)例):
[user]
type=1
name=ThinkPHP
[db]
type=mysql
user=rot
password=''
標準的(de)xml格式文件定義:
<config>
<user>
<type>1</type>
<name>ThinkPHP</name>
</user>
<db>
<type>mysql</type>
<user>root</user>
<password></password>
</db>
</config>
set方法也(ye)支持二(er)級配置(zhi),例如:
Config::set([
'type' => 'file',
'prefix' => 'think'
],'cache');
