ThinkPHP3.1.3原始碼分析(二) runtime.php

程式碼修行者發表於2014-10-28

一、示例程式碼

runtime.php 主要 3個部分,

1、定義系統目錄和專案目錄
// 路徑設定 可在入口檔案中重新定義 所有路徑常量都必須以/ 結尾
defined('CORE_PATH')    or define('CORE_PATH',      THINK_PATH.'Lib/'); // 系統核心類庫目錄
defined('EXTEND_PATH')  or define('EXTEND_PATH',    THINK_PATH.'Extend/'); // 系統擴充套件目錄
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/'); // 專案資料目錄
defined('CACHE_PATH')   or define('CACHE_PATH',     RUNTIME_PATH.'Cache/'); // 專案模板快取目錄

2、載入核心類和基礎函式庫(common.php)
 // 載入系統基礎函式庫
    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、建立專案目錄

if(!is_dir(LIB_PATH)) {
        // 建立專案目錄結構
        build_app_dir();
    }
    /*Runtime目錄不存在則重新建立Runtime目錄*/
    elseif(!is_dir(CACHE_PATH)){
        // 檢查快取目錄
        check_runtime();
    }elseif(APP_DEBUG){
        // 除錯模式切換刪除編譯快取
        if(is_file(RUNTIME_FILE))   unlink(RUNTIME_FILE);
    }


最後就是呼叫 Think.class.php 中的

 Think::Start();


二、值得說的程式設計小細節:

// 為了方便匯入第三方類庫 設定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'; 即可

相關文章