ThinkPHP3.1.3源碼分析(二) runtime.php
一、示例代碼
runtime.php 主要 3個部分, 1、定義系統(tǒng)目錄和項目目錄
//?路徑設置?可在入口文件中重新定義?所有路徑常量都必須以/?結尾 defined('CORE_PATH')????or?define('CORE_PATH',??????THINK_PATH.'Lib/');?//?系統(tǒng)核心類庫目錄 defined('EXTEND_PATH')??or?define('EXTEND_PATH',????THINK_PATH.'Extend/');?//?系統(tǒng)擴展目錄 defined('MODE_PATH')????or?define('MODE_PATH',??????EXTEND_PATH.'Mode/');?//?模式擴展目錄 //省略 defined('TEMP_PATH')????or?define('TEMP_PATH',??????RUNTIME_PATH.'Temp/');?//?項目緩存目錄 defined('DATA_PATH')????or?define('DATA_PATH',??????RUNTIME_PATH.'Data/');?//?項目數(shù)據(jù)目錄 defined('CACHE_PATH')???or?define('CACHE_PATH',?????RUNTIME_PATH.'Cache/');?//?項目模板緩存目錄
2、載入核心類和基礎函數(shù)庫(common.php)
?//?加載系統(tǒng)基礎函數(shù)庫 ????require?THINK_PATH.'Common/common.php'; ????//?讀取核心文件列表 ????$list?=?array( ????????CORE_PATH.'Core/Think.class.php', ????????CORE_PATH.'Core/ThinkException.class.php',??//?異常處理類 ????????CORE_PATH.'Core/Behavior.class.php', ????); ????//?加載模式文件列表 ????foreach?($list?as?$key=>$file){ ????????if(is_file($file))??require_cache($file); ????}
3、創(chuàng)建項目目錄
if(!is_dir(LIB_PATH))?{ ????????//?創(chuàng)建項目目錄結構 ????????build_app_dir(); ????} ????/*Runtime目錄不存在則重新創(chuàng)建Runtime目錄*/ ????elseif(!is_dir(CACHE_PATH)){ ????????//?檢查緩存目錄 ????????check_runtime(); ????}elseif(APP_DEBUG){ ????????//?調試模式切換刪除編譯緩存 ????????if(is_file(RUNTIME_FILE))???unlink(RUNTIME_FILE); ????}
最后就是調用 Think.class.php 中的
?Think::Start();
二、值得說的編程小細節(jié):
//?為了方便導入第三方類庫?設置Vendor目錄到include_path set_include_path(get_include_path()?.?PATH_SEPARATOR?.?VENDOR_PATH);
舉例: some.class.php 在 ?/a/b/c/include 目錄下
那么在 引入類文件 include '/a/b/c/include/some.class.php';
如果定義了 ?set_include_path('/a/b/c/include');
只需 include 'some.class.php'; 即可