---------------------------------------------------------------------------------------------------
PHPCMS的入口文件index.php裡的代碼較少,主要做了三件事,如下:
//1.定義PHPCMS根目錄(入口文件所在目錄),PHPCMS_PATH全局可用 define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR) //2.引入框架入口文件(與入口文件同級的框架目錄phpcms中的base.php) include PHPCMS_PATH.'/phpcms/base.php'; //3.調用框架入口文件中基類pc_base的靜態方法create_app(),進行應用程序初始化 pc_base::create_app();
代碼雖少,但是將 做了很多事的框架入口文件base.php加載進來後,等於直接就進入了PHPCMS的核心。
---------------------------@chenwei 黑眼詩人 <www.chenwei.ws>---------------------------
簡單說下base.php主要做的事:
1.定義一系列常量,如框架路徑,緩存文件夾路徑等,全局可用。
2.加載框架自帶函數庫,全局可用。
3.通過讀取配置文件,將配置值定義為常量,全局可用。
4.自帶PHPCMS基類(pc_base),定義了加載系統類,應用類,數據模型,系統函數庫,應用函數庫,插件類庫,插件數據模型,配置文件等的方法。
define('CSS_PATH', pc_base::load_config('system', 'css_path'));
上面定義了CSS路徑為常量,以便 前後台的全局使用,那它是如何加載配置文件的,如下方法:
/**
* 加載配置文件
* @param string $file 配置文件
* @param string $key 要獲取的配置鍵
* @param string $default 默認配置。當獲取配置項目失敗時該值發生作用。
* @param boolean $reload 強制重新加載。
*/
public static function load_config($file, $key = '', $default = '', $reload = false) { static $configs = array(); //# 定義存放配置值的空數組
//----------------------------------------- if (!$reload && isset($configs[$file])) { //# 如果重新加載 且 設置了$configs[$file](這裡不執行) if (empty($key)) { return $configs[$file]; //# 如果配置鍵為空,返回整個配置數組(配置文件以一維數組形式返回,如:return array('a'=>'','b'=>'')) } elseif (isset($configs[$file][$key])) { return $configs[$file][$key]; //# 如果設置了有配置鍵的值,返回 } else { return $default; //# 默認返回配置default } }
//----------------------------------------- $path = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.$file.'.php';//# 系統配置文件路徑,$path = PHPCMS_PATH.'caches/configs/system.php'; if (file_exists($path)) { $configs[$file] = include $path; //# 如果system配置文件存在,引入 } if (empty($key)) { //# 根據$key取配置值,否則返回default值,同上虛線間代碼 return $configs[$file]; } elseif (isset($configs[$file][$key])) { return $configs[$file][$key]; } else { return $default; } }
所以在使用load_config()時,只需傳入配置文件名 和 配置鍵,即可獲取配置值; 一般獲取配置項的原理類似。