thinkPHP中配置的讀取與C方法詳解
本文實例講述了thinkPHP中配置的讀取與C方法。分享給大家供大家參考,具體如下:
1.項目公共配置
Conf/config.php
內(nèi)容如下
<?php /** *項目公共配置 *@package *@author **/ return array( 'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay', 'APP_AUTOLOAD_PATH' => '@.ORG', 'OUTPUT_ENCODE' => true, //頁面壓縮輸出 'PAGE_NUM' => 15, /*Cookie配置*/ 'COOKIE_PATH' => '/', // Cookie路徑 'COOKIE_PREFIX' => '', // Cookie前綴 避免沖突 /*定義模版標(biāo)簽*/ 'TMPL_L_DELIM' =>'{sh:', //模板引擎普通標(biāo)簽開始標(biāo)記 'TMPL_R_DELIM' =>'}', //模板引擎普通標(biāo)簽結(jié)束標(biāo)記 'TMPL_CACHE_ON' => false, //關(guān)閉模板緩存 'DEFAULT_GROUP' => 'Home', //默認(rèn)訪問分組,設(shè)置默認(rèn)入口 'APP_GROUP_LIST' => 'Agent,Home,System,User,Store,Wap,Mall,Opener', // 項目分組設(shè)定,多個組之間用逗號分隔,例如'Home,Admin' 'PUBLIC_RESOURSE' => './Public/', 'URL_404_REDIRECT' => './Tpl/404.html', ); ?>
'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay' 確定加載的額外的配置,這些配置都可以通過C()方法讀取,全局有效。
2.如果啟用了模塊分組,則可以在對每個分組單獨定義配置文件,分組配置文件位于:
項目配置目錄/分組名稱/config.php
'APP_GROUP_LIST' => 'Home,Admin', //項目分組設(shè)定 'DEFAULT_GROUP' => 'Home', //默認(rèn)分組
現(xiàn)在定義了Home和Admin兩個分組,則我們可以定義分組配置文件如下:
Conf/Home/config.php Conf/Admin/config.php
每個分組的配置文件僅在當(dāng)前分組有效,分組配置的定義格式和項目配置是一樣的。
注意:分組名稱區(qū)分大小寫,必須和定義的分組名一致。
3.讀取配置
定義了配置文件之后,可以使用系統(tǒng)提供的C方法(如果覺得比較奇怪的話,可以借助Config單詞來幫助記憶)來讀取已有的配置
C('參數(shù)名稱')//獲取已經(jīng)設(shè)置的參數(shù)值
例如,C('APP_STATUS') 可以讀取到系統(tǒng)的調(diào)試模式的設(shè)置值,同樣,由于配置參數(shù)不區(qū)分大小寫,因此C('app_status')是等效的,但是建議使用大寫方式的規(guī)范。
如果APP_STATUS尚未存在設(shè)置,則返回NULL。
C方法同樣可以用于讀取二維配置
C('USER_CONFIG.USER_TYPE')//獲取用戶配置中的用戶類型設(shè)置
C方法讀取全局配置,以及當(dāng)前模塊的配置。
參數(shù)沒有的話,將讀取全部的有效配置。
如果存在相同的配置名,前面的值將被覆蓋。
例如:
'HTML_CACHE_TIME' => 60, //靜態(tài)緩存有效期(秒) 'HTML_CACHE_TIME' => 80,
最終獲取的是80。
加載順序依照參數(shù)LOAD_EXT_CONFIG
'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay'
比如info中有個參數(shù)HTML_CACHE_TIME 為60 ,其余配置中沒有,那么這個參數(shù)讀取出來就是60。
如果db中也有HTML_CACHE_TIME為50,那么值還是60。因為info是后讀取的,把db中的HTML_CACHE_TIME覆蓋掉了。
附上C方法源碼
/** * 獲取和設(shè)置配置參數(shù) 支持批量定義 * @param string|array $name 配置變量 * @param mixed $value 配置值 * @return mixed */ function C($name=null, $value=null) { static $_config = array(); // 無參數(shù)時獲取所有 if (empty($name)) { if(!empty($value) && $array = cache('c_'.$value)) { $_config = array_merge($_config, array_change_key_case($array)); } return $_config; } // 優(yōu)先執(zhí)行設(shè)置獲取或賦值 if (is_string($name)) { if (!strpos($name, '.')) { $name = strtolower($name); if (is_null($value)) return isset($_config[$name]) ? $_config[$name] : null; $_config[$name] = $value; return; } // 二維數(shù)組設(shè)置和獲取支持 $name = explode('.', $name); $name[0] = strtolower($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null; $_config[$name[0]][$name[1]] = $value; return; } // 批量設(shè)置 if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name)); if(!empty($value)) {// 保存配置值 cache('c_'.$value,$_config); } return; } return null; // 避免非法參數(shù) }
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》、《smarty模板入門基礎(chǔ)教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
相關(guān)文章
ThinkPHP行為擴(kuò)展Behavior應(yīng)用實例詳解
這篇文章主要介紹了ThinkPHP行為擴(kuò)展Behavior應(yīng)用實例,對于讀者深入了解ThinkPHP框架程序設(shè)計大有幫助,需要的朋友可以參考下2014-07-07laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法
今天小編就為大家分享一篇laravel實現(xiàn)登錄時監(jiān)聽事件,添加登錄用戶的記錄方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09Laravel框架Eloquent ORM新增數(shù)據(jù)、自定義時間戳及批量賦值用法詳解
這篇文章主要介紹了Laravel框架Eloquent ORM新增數(shù)據(jù)、自定義時間戳及批量賦值用法,結(jié)合實例形式詳細(xì)分析了Laravel框架Eloquent ORM通過模型新增數(shù)據(jù)、時間戳設(shè)置、批量賦值模型、Create新增等相關(guān)使用方法,需要的朋友可以參考下2019-12-12Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法
這篇文章主要介紹了Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法,結(jié)合實例分析了Yii實現(xiàn)文章詳情頁評論表單功能的具體技巧,需要的朋友可以參考下2015-12-12