您好,登錄后才能下訂單哦!
ThinkPHP的配置非常靈活,可自定義加載.大概看了一下,一共有這幾個地方會加載配置文件,方便以后的讀取
/** * 獲取和設(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 = S ( '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 )) { // 保存配置值 S ( 'c_' . $value, $_config ); } return; } return null; // 避免非法參數(shù) }
C()函數(shù)在運(yùn)行的時候,就會把配置文件中的配置都加載到C()函數(shù)中,以后只要需要的提取出來即可,而且可以臨時增加自己的C函數(shù)
1.Think.class.php buildApp方法,加載公共配置文件Conf/convention.php,緩存到C方法里
// 加載核心慣例配置文件Think.class.php第60行 C(include THINK_PATH.'Conf/convention.php'); if(isset($mode['config'])) {// 加載模式配置文件 C( is_array($mode['config'])?$mode['config']:include $mode['config'] ); }
2.加載項(xiàng)目的config.php文件
// 加載項(xiàng)目配置文件 Think.class.php第66行 if(is_file(CONF_PATH.'config.php')) C(include CONF_PATH.'config.php');
3.加載系統(tǒng)標(biāo)簽配置文件ThinkPHP/Conf/tags.php文件,C('extends');
// 加載模式系統(tǒng)行為定義 if(C('APP_TAGS_ON')) { if(isset($mode['extends'])) { C('extends',is_array($mode['extends'])?$mode['extends']:include $mode['extends']); }else{ // 默認(rèn)加載系統(tǒng)行為擴(kuò)展定義 C('extends', include THINK_PATH.'Conf/tags.php'); } }
4.加載應(yīng)用標(biāo)簽配置APP/Conf/tags.php C('extends');
// 加載應(yīng)用行為定義 if(isset($mode['tags'])) { C('tags', is_array($mode['tags'])?$mode['tags']:include $mode['tags']); }elseif(is_file(CONF_PATH.'tags.php')){ // 默認(rèn)加載項(xiàng)目配置目錄的tags文件定義 C('tags', include CONF_PATH.'tags.php'); }
5.如果是調(diào)試模式,則加載ThinkPHP/Conf/debug.php,和應(yīng)用狀態(tài)調(diào)試文件
if(APP_DEBUG) { // 調(diào)試模式加載系統(tǒng)默認(rèn)的配置文件 C(include THINK_PATH.'Conf/debug.php'); // 讀取調(diào)試模式的應(yīng)用狀態(tài) $status = C('APP_STATUS'); // 加載對應(yīng)的項(xiàng)目配置文件 if(is_file(CONF_PATH.$status.'.php')) // 允許項(xiàng)目增加開發(fā)模式配置定義 C(include CONF_PATH.$status.'.php'); }else{ // 部署模式下面生成編譯文件 build_runtime_cache($compile); }
6.App:init 調(diào)用function.php中得load_ext_file函數(shù),加載自定義配置文件
在function.php中l(wèi)oad_ext_file()函數(shù)中
/** * 加載動態(tài)擴(kuò)展文件 * @return void */ function load_ext_file() { // 加載自定義外部文件 if(C('LOAD_EXT_FILE')) { $files = explode(',',C('LOAD_EXT_FILE')); foreach ($files as $file){ $file = COMMON_PATH.$file.'.php'; if(is_file($file)) include $file; } } // 加載自定義的動態(tài)配置文件 if(C('LOAD_EXT_CONFIG')) { $configs = C('LOAD_EXT_CONFIG'); if(is_string($configs)) $configs = explode(',',$configs); foreach ($configs as $key=>$config){ $file = CONF_PATH.$config.'.php'; if(is_file($file)) { is_numeric($key)?C(include $file):C($key,include $file); } } } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。