配置加載
在ThinkPHP中,一般來說應(yīng)用的配置文件是自動加載的,加載的順序是:
慣例配置->應(yīng)用配置->擴展配置->場景配置->模塊配置->動態(tài)配置
以上是配置文件的加載順序,因為后面的配置會覆蓋之前的同名配置(在沒有生效的前提下),所以配置的優(yōu)先順序從右到左。
下面說明下不同的配置文件的區(qū)別和位置:
慣例配置
慣例重于配置是系統(tǒng)遵循的一個重要思想,框架內(nèi)置有一個慣例配置文件(位于ThinkPHP/convention.php
),按照大多數(shù)的使用對常用參數(shù)進行了默認配置。所以,對于應(yīng)用的配置文件,往往只需要配置和慣例配置不同的或者新增的配置參數(shù),如果你完全采用默認配置,甚至可以不需要定義任何配置文件。
建議仔細閱讀下系統(tǒng)的慣例配置文件中的相關(guān)配置參數(shù),了解下系統(tǒng)默認的配置參數(shù)。
應(yīng)用配置
應(yīng)用配置文件是應(yīng)用初始化的時候首先加載的公共配置文件,默認位于application/config.php
。
擴展配置
擴展配置文件是由extra_config_list
配置參數(shù)定義的額外的配置文件,默認會加載database
和validate
兩個擴展配置文件。
V5.0.1
開始,取消了該配置參數(shù),擴展配置文件直接放入application/extra
目錄會自動加載。
場景配置
每個應(yīng)用都可以在不同的情況下設(shè)置自己的狀態(tài)(或者稱之為應(yīng)用場景),并且加載不同的配置文件。
舉個例子,你需要在公司和家里分別設(shè)置不同的數(shù)據(jù)庫測試環(huán)境。那么可以這樣處理,在公司環(huán)境中,我們在應(yīng)用配置文件中配置:
'app_status'=>'office'
那么就會自動加載該狀態(tài)對應(yīng)的配置文件(默認位于application/office.php
)。
如果我們回家后,我們修改定義為:
'app_status'=>'home'
那么就會自動加載該狀態(tài)對應(yīng)的配置文件(位于application/home.php
)。
狀態(tài)配置文件是可選的
模塊配置
每個模塊會自動加載自己的配置文件(位于application/當前模塊名/config.php
)。
模塊還可以支持獨立的狀態(tài)配置文件,命名規(guī)范為:application/當前模塊名/應(yīng)用狀態(tài).php
。
模塊配置文件是可選的
如果你的應(yīng)用的配置文件比較大,想分成幾個單獨的配置文件或者需要加載額外的配置文件的話,可以考慮采用擴展配置或者動態(tài)配置(參考后面的描述)。
加載配置文件
Config::load('配置文件名');
配置文件一般位于APP_PATH
目錄下面,如果需要加載其它位置的配置文件,需要使用完整路徑,例如:
Config::load(APP_PATH.'config/config.php');
系統(tǒng)默認的配置定義格式是PHP返回數(shù)組的方式,例如:
return [
'配置參數(shù)1'=>'配置值',
'配置參數(shù)1'=>'配置值',
// ... 更多配置
];
如果你定義格式是其他格式的話,可以使用parse
方法來導(dǎo)入,例如:
Config::parse(APP_PATH.'my_config.ini','ini');
Config::parse(APP_PATH.'my_config.xml','xml');
parse方法的第一個參數(shù)需要傳入完整的文件名或者配置內(nèi)容。
如果不傳入第二個參數(shù)的話,系統(tǒng)會根據(jù)配置文件名自動識別配置類型,所以下面的寫法仍然是支持的:
Config::parse('my_config.ini');
parse方法除了支持讀取配置文件外,也支持直接傳入配置內(nèi)容,例如:
$config = 'var1=val
var2=val';
Config::parse($config,'ini');
支持傳入配置文件內(nèi)容的時候 第二個參數(shù)必須顯式指定。
標準的ini格式文件定義:
配置參數(shù)1=配置值
配置參數(shù)2=配置值
標準的xml格式文件定義:
<config>
<var1>val1</var1>
<var2>val2</var2>
</config>
配置類采用驅(qū)動方式支持各種不同的配置文件類型,因此可以根據(jù)需要隨意擴展。