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