配置加載
在ThinkPHP中,一般(ban)來說應用的配置文件是自動加(jia)載的,加(jia)載的順序(xu)是:
慣例配置->應用配置->擴展配置->場景配置->模塊配置->動態配置
以(yi)上是配(pei)(pei)置(zhi)(zhi)文(wen)件(jian)的(de)加載順序(xu)(xu),因為后面的(de)配(pei)(pei)置(zhi)(zhi)會(hui)覆蓋之前的(de)同名配(pei)(pei)置(zhi)(zhi)(在沒有生效的(de)前提(ti)下),所以(yi)配(pei)(pei)置(zhi)(zhi)的(de)優先順序(xu)(xu)從右到左。
下面(mian)說(shuo)明下不(bu)同的(de)配(pei)置(zhi)文(wen)件的(de)區(qu)別(bie)和(he)位置(zhi):
慣例配置
慣例重于配置是系統遵循的一個重要思想,框架內置有一個慣例配置文件(位于ThinkPHP/convention.php),按照大多(duo)數(shu)的使用對常用參(can)數(shu)進(jin)行了(le)默認配置。所以,對于應用的配置文件(jian)(jian),往往只需(xu)要(yao)配置和(he)慣例配置不同的或者新增(zeng)的配置參(can)數(shu),如果你(ni)完全采用默認配置,甚至可以不需(xu)要(yao)定義任(ren)何配置文件(jian)(jian)。
建議(yi)仔細閱讀(du)下系統的(de)慣例配置(zhi)文件中(zhong)的(de)相關配置(zhi)參數,了解下系統默(mo)認的(de)配置(zhi)參數。
應用配置
應用配置文件是應用初始化的時候首先加載的公共配置文件,默認位于application/config.php。
擴展配置
擴展配置文件是由extra_config_list配置參數定義的額外的配置文件,默認會加載database和validate兩個擴展配置文件。
V5.0.1開始,取消了該配置參數,擴展配置文件直接放入application/extra目錄會自動加載。
場景配置
每個應用都可以在不同的情況下設(she)置自己的狀態(或者稱之為(wei)應用場景(jing)),并且加載不同的配(pei)置文件。
舉個(ge)例子,你需要在(zai)公(gong)司和家里分別(bie)設置不同的數據庫(ku)測試環境(jing)。那么可以(yi)這樣處理,在(zai)公(gong)司環境(jing)中,我們在(zai)應(ying)用配(pei)置文件中配(pei)置:
'app_status'=>'office'
那么就會自動加載該狀態對應的配置文件(默認位于application/office.php)。
如(ru)果我們回家(jia)后,我們修改定義為(wei):
'app_status'=>'home'
那么就會自動加載該狀態對應的配置文件(位于application/home.php)。
狀態(tai)配置文件是可選的
模塊配置
每個模塊會自動加載自己的配置文件(位于application/當前模塊名/config.php)。
模塊還可以支持獨立的狀態配置文件,命名規范為:application/當前模塊名/應用狀態.php。
模塊(kuai)配置(zhi)文(wen)件是可選(xuan)的
如果你的(de)應(ying)用的(de)配(pei)(pei)置文(wen)件(jian)(jian)比較大,想(xiang)分成幾個(ge)單(dan)獨的(de)配(pei)(pei)置文(wen)件(jian)(jian)或(huo)者需要加載額外的(de)配(pei)(pei)置文(wen)件(jian)(jian)的(de)話,可(ke)以考慮采用擴展配(pei)(pei)置或(huo)者動態(tai)配(pei)(pei)置(參考后(hou)面的(de)描(miao)述)。
加載配置文件
Config::load('配置文件名');
配置文件一般位于APP_PATH目錄下面,如果(guo)需(xu)要加載其它位置的配置文件(jian),需(xu)要使用完(wan)整(zheng)路(lu)徑,例如:
Config::load(APP_PATH.'config/config.php');
系(xi)統默認的(de)配置定義格式是(shi)PHP返回數組的(de)方(fang)式,例如:
return [
'配置(zhi)參數(shu)1'=>'配置值',
'配置參數1'=>'配置值',
// ... 更多配(pei)置
];
如果你定義格式是其他格式的話,可以使用parse方法來導入,例如:
Config::parse(APP_PATH.'my_config.ini','ini');
Config::parse(APP_PATH.'my_config.xml','xml');
parse方法的第(di)一個參數需要傳入完整的文(wen)件(jian)名或者(zhe)配置內容(rong)。
如果不傳(chuan)入第二(er)個參數(shu)的(de)話(hua),系統會根據配置(zhi)文件(jian)名自動識別配置(zhi)類(lei)型(xing),所(suo)以(yi)下面的(de)寫法仍然是支持的(de):
Config::parse('my_config.ini');
parse方法(fa)除了支(zhi)持讀(du)取配置(zhi)文件外,也支(zhi)持直接傳入(ru)配置(zhi)內容,例如:
$config = 'var1=val
var2=val';
Config::parse($config,'ini');
支持傳入(ru)配置文件(jian)內容(rong)的時候(hou) 第二(er)個參數必須(xu)顯式指定。
標準的ini格式(shi)文件定義:
配置參數1=配置值
配置參數2=配置值
標(biao)準的(de)xml格式文件定義:
<config>
<var1>val1</var1>
<var2>val2</var2>
</config>
配(pei)置類采用驅動方(fang)式支持各種(zhong)不(bu)同的配(pei)置文件類型,因此可以根據(ju)需要隨(sui)意擴展。
