目錄
- 配置加載
- 慣例配置
- 應用配置
- 模式配置(可選)
- 調試配置(可選)
- 狀態(tài)配置(可選)
- 模塊配置
- 讀取配置
本文實例講述了Thinkphp 框架配置操作之配置加載與讀取配置。分享給大家供大家參考,具體如下:
配置加載
在ThinkPHP中,一般來說應用的配置文件是自動加載的,加載的順序是:
慣例配置->應用配置->模式配置->調試配置->狀態(tài)配置->模塊配置->擴展配置->動態(tài)配置
以上是配置文件的加載順序,因為后面的配置會覆蓋之前的同名配置(在沒有生效的前提下),所以配置的優(yōu)先順序從右到左。
不同的配置文件的區(qū)別和位置:
慣例配置
慣例重于配置是系統(tǒng)遵循的一個重要思想,框架內置有一個慣例配置文件(位于ThinkPHP/Conf/convention.php),按照大多數的使用對常用參數進行了默認配置。所以,對于應用的配置文件,往往只需要配置和慣例配置不同的或者新增的配置參數,如果你完全采用默認配置,甚至可以不需要定義任何配置文件
應用配置
應用配置文件也就是調用所有模塊之前都會首先加載的公共配置文件(默認位于Application/Common/Conf/config.php)。
如果更改了公共模塊的名稱的話,公共配置文件的位置也相應改變
模式配置(可選)
如果使用了普通應用模式之外的應用模式的話,還可以為應用模式(后面會有描述)單獨定義配置文件,文件命名規(guī)范是: Application/Common/Conf/config_應用模式名稱.php(僅在運行該模式下面才會加載)。
模式配置文件是可選的
調試配置(可選)
如果開啟調試模式的話,則會自動加載框架的調試配置文件(位于ThinkPHP/Conf/debug.php)和應用調試配置文件(位于Application/Common/Conf/debug.php)
狀態(tài)配置(可選)
每個應用都可以在不同的情況下設置自己的狀態(tài)(或者稱之為應用場景),并且加載不同的配置文件。
舉個例子,你需要在公司和家里分別設置不同的數據庫測試環(huán)境。那么可以這樣處理,在公司環(huán)境中,我們在入口文件中定義:
define('APP_STATUS','office');
那么就會自動加載該狀態(tài)對應的配置文件(位于Application/Common/Conf/office.php)。
如果我們回家后,我們修改定義為:
define('APP_STATUS','home');
那么就會自動加載該狀態(tài)對應的配置文件(位于Application/Common/Conf/home.php)。
狀態(tài)配置文件是可選的
模塊配置
每個模塊會自動加載自己的配置文件(位于Application/當前模塊名/Conf/config.php)。
如果使用了普通模式之外的其他應用模式,你還可以為應用模式單獨定義配置文件,命名規(guī)范為: Application/當前模塊名/Conf/config_應用模式名稱.php(僅在運行該模式下面才會加載)。
模塊還可以支持獨立的狀態(tài)配置文件,命名規(guī)范為: Application/當前模塊名/Conf/應用狀態(tài).php。
讀取配置
無論何種配置文件,定義了配置文件之后,都統(tǒng)一使用系統(tǒng)提供的C方法(可以借助Config單詞來幫助記憶)來讀取已有的配置。
用法:
例如,讀取當前的URL模式配置參數:
$model = C('URL_MODEL');
// 由于配置參數不區(qū)分大小寫,因此下面的寫法是等效的
// $model = C('url_model');
但是建議使用大寫方式的規(guī)范。
注意:配置參數名稱中不能含有 “.” 和特殊字符,允許字母、數字和下劃線。
如果url_model尚未存在設置,則返回NULL。
支持在讀取的時候設置默認值,例如:
// 如果my_config尚未設置的話,則返回default_config字符串
C('my_config',null,'default_config');
C方法也可以用于讀取二維配置:
//獲取用戶配置中的用戶類型設置
C('USER_CONFIG.USER_TYPE');
因為配置參數是全局有效的,因此C方法可以在任何地方讀取任何配置,即使某個設置參數已經生效過期了。
更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。
您可能感興趣的文章:- thinkphp 框架數據庫切換實現(xiàn)方法分析
- Thinkphp 框架配置操作之動態(tài)配置、擴展配置及批量配置實例分析
- Thinkphp 框架基礎之入口文件功能、定義與用法分析
- Thinkphp 框架基礎之源碼獲取、環(huán)境要求與目錄結構分析
- Thinkphp 框架擴展之驅動擴展實例分析
- Thinkphp 框架擴展之應用模式實現(xiàn)方法分析
- Thinkphp 框架擴展之Widget擴展實現(xiàn)方法分析
- Thinkphp 框架擴展之行為擴展原理與實現(xiàn)方法分析
- Thinkphp 框架擴展之標簽庫驅動原理與用法分析
- 淺談PHP之ThinkPHP框架使用詳解