ThinkPHP3.1.3原始碼分析(二) runtime.php
一、示例程式碼
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'; 即可
相關文章
- ThinkPHP3.1.3原始碼分析(一) 入口檔案分析PHP原始碼
- ThinkPHP3.1.3原始碼分析(五) App.class.phpPHP原始碼APP
- ThinkPHP3.1.3原始碼分析(三) common.phpPHP原始碼
- ThinkPHP3.1.3原始碼分析(四) Think.class.phpPHP原始碼
- MyBatis原始碼分析(二)MyBatis原始碼
- 原始碼分析二:LeakCanary原始碼
- Backbone原始碼分析(二)原始碼
- YYCache 原始碼分析(二)原始碼
- 原始碼|jdk原始碼之HashMap分析(二)原始碼JDKHashMap
- redis原始碼分析(二)、redis原始碼分析之sds字串Redis原始碼字串
- LinkedList原始碼分析(二)原始碼
- Volley原始碼分析(二)原始碼
- Retrofit原始碼分析二 代理模式原始碼模式
- Tinker接入及原始碼分析(二)原始碼
- SlidingMenu原始碼分析(二)原始碼
- Spring原始碼系列(二)--bean元件的原始碼分析Spring原始碼Bean元件
- Vue原始碼分析系列二:$mount()方法Vue原始碼
- 窺探React-原始碼分析(二)React原始碼
- Zookeeper原始碼分析(二) —– zookeeper日誌原始碼
- Netty原始碼分析--Reactor模型(二)Netty原始碼React模型
- Kafka原始碼分析(二) - 生產者Kafka原始碼
- Spring原始碼分析之IoC(二)Spring原始碼
- Kubernetes Deployment 原始碼分析(二)原始碼
- Zookeeper原始碼分析(二) ----- zookeeper日誌原始碼
- Android Loader原始碼分析(二)Android原始碼
- MPTCP 原始碼分析(二) 建立子路徑TCP原始碼
- JUnit原始碼分析(二)——觀察者模式原始碼模式
- Go 互斥鎖 Mutex 原始碼分析(二)GoMutex原始碼
- 5.2 Spring5原始碼--Spring AOP原始碼分析二Spring原始碼
- Android 原始碼分析(二)handler 機制Android原始碼
- OkHttp 原始碼分析(二)—— 快取機制HTTP原始碼快取
- Java併發之AQS原始碼分析(二)JavaAQS原始碼
- gson-plugin基礎原始碼分析(二)Plugin原始碼
- OkHttpClient原始碼分析(二) —— RetryAndFollowUpInterceptor和BridgeInterceptorHTTPclient原始碼
- RecyclerView 原始碼分析(二) —— 快取機制View原始碼快取
- TMCache原始碼分析(二)---TMDiskCache磁碟快取原始碼快取
- ecshop 二次開發,原始碼分析原始碼
- Apache DolphinScheduler-1.3.9原始碼分析(二)Apache原始碼