這篇文章主要介紹了thinkPHP中配置的讀取與C方法,結合實例形式分析了thinkPHP配置文件的功能、位置、分組及讀取方法,需要的朋友可以參考下
本文實例講述了thinkPHP中配置的讀取與C方法。分享給大家參考,如下:
1.專案公共配置
#Conf/config.php
##內容如下<?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前缀 避免冲突 /*定义模版标签*/ 'TMPL_L_DELIM' =>'{sh:', //模板引擎普通标签开始标记 'TMPL_R_DELIM' =>'}', //模板引擎普通标签结束标记 'TMPL_CACHE_ON' => false, //关闭模板缓存 'DEFAULT_GROUP' => 'Home', //默认访问分组,设置默认入口 'APP_GROUP_LIST' => 'Agent,Home,System,User,Store,Wap,Mall,Opener', // 项目分组设定,多个组之间用逗号分隔,例如'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', //项目分组设定 'DEFAULT_GROUP' => 'Home', //默认分组現在定義了Home和Admin兩個分組,則我們可以定義分組設定檔如下:
Conf/Home/config.php Conf/Admin/config.php每個分組的設定檔僅在目前分組有效,分組配置的定義格式和專案配置是一樣的。
注意:分組名稱區分大小寫,必須和定義的分組名稱一致。
3.讀取配置
定義了設定檔之後,可以使用系統提供的C方法(如果覺得比較奇怪的話,可以藉助Config單字來幫助記憶)來讀取現有的設定C('参数名称')//获取已经设置的参数值#例如,C('APP_STATUS') 可以讀取到系統的偵錯模式的設定值,同樣,由於配置參數不區分大小寫,因此C('app_status')是等效的,但是建議使用大寫方式的規範。 如果APP_STATUS尚未存在設置,則傳回NULL。 C方法同樣可以用來讀取二維配置
C('USER_CONFIG.USER_TYPE')//获取用户配置中的用户类型设置#C方法讀取全域配置,以及目前模組的配置。 參數沒有的話,將讀取全部的有效配置。 如果存在相同的配置名,前面的值將會被覆寫。 例如:
'HTML_CACHE_TIME' => 60, //静态缓存有效期(秒) 'HTML_CACHE_TIME' => 80,最終取得的是80。 載入順序依照參數LOAD_EXT_CONFIG
'LOAD_EXT_CONFIG' => 'db,info,email,safe,upfile,cache,route,app,alipay,sms,platform,store,pay'例如info中有個參數HTML_CACHE_TIME 為60 ,其餘設定中沒有,那麼這個參數讀取出來就是60。 如果db中也有HTML_CACHE_TIME為50,那麼值還是60。因為info是後面讀取的,把db中的HTML_CACHE_TIME覆蓋掉了。 附上C方法原始碼
/** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @return mixed */ function C($name=null, $value=null) { static $_config = array(); // 无参数时获取所有 if (empty($name)) { if(!empty($value) && $array = cache('c_'.$value)) { $_config = array_merge($_config, array_change_key_case($array)); } return $_config; } // 优先执行设置获取或赋值 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; } // 二维数组设置和获取支持 $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; } // 批量设置 if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name)); if(!empty($value)) {// 保存配置值 cache('c_'.$value,$_config); } return; } return null; // 避免非法参数 }#以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! 相關推薦:
以上是thinkPHP中配置的讀取與C方法的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!