我們知道ThinkPHP有公共的函數文件和配置文件,位於Common目錄下,默認Common/function.php爲公共的函數文 件,Conf/config.php爲公共配置文件。好了,那麼如何自定義其他的公共函數和配置文件呢。這裏不得不講到兩個配置參數 LOAD_EXT_FILE和LOAD_EXT_CONFIG了。
1. LOAD_EXT_FILE配置的是自定義的函數文件,比如我想在Common目錄下再創建一個common.php文件,那麼在config.php裏 則可以配置LOAD_EXT_FILE=>'common',這樣common.php文件就會自動載入了。
Common/Conf/config.php return array( LOAD_EXT_FILE=>'common');
然後在common.php裏寫一個方法,比如:
function T_dump($data){ if (!empty($data)){ echo '<pre>'; var_dump($data); echo '</pre>'; }}
在控制器裏調用T_dump(array(1,2,3));輸出:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 如果在Common下另建了另一個文件,test.php,在test.php文件裏定義一個test函數 function(){echo 'test';} 那麼控制器裏直接調用就會報錯:Call to undefined function Home\Controller\test() 如果在config.php里加上test,‘LOAD_EXT_FILE’=>'common,test',則正常執行。 2.LOAD_EXT_CONFIG用於自定義配置文件,比如除了config.php你想引入一個額外的配置文件global.php 那麼可以在config.php裏配置:
LOAD_EXT_CONFIG=>'global' 那麼你在Conf目錄下創建一個global.php文件,寫一個配置參數 return array('MONGO_DBNAME'=>'idacker');
然後C調用echo C('MONGO_DBNAME')
輸出:idacker 3.加載原理,其實自定義函數和配置文件的加載歸功於load_ext_file函數, /** * 加載動態擴展文件 * @var string $path 文件路徑 * @return void */ function load_ext_file($path) { // 加載自定義外部文件 if($files = C('LOAD_EXT_FILE')) { $files = explode(',',$files); foreach ($files as $file){ $file = $path.'Common/'.$file.'.php'; if(is_file($file)) include $file; } } // 加載自定義的動態配置文件 if($configs = C('LOAD_EXT_CONFIG')) { if(is_string($configs)) $configs = explode(',',$configs); foreach ($configs as $key=>$config){ $file = is_file($config)? $config : $path.'Conf/'.$config.CONF_EXT; if(is_file($file)) { is_numeric($key)?C(load_config($file)):C($key,load_config($file)); } } } } 函數需要傳入一個$path目錄路徑,比如我們傳入COMMON_PATH, 那麼上面兩步創建的common.php函數和global.php配置文件將被加載。