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