原始碼解析ThinkPHP.php
// +----------------------------------------------------------------------
// | [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2012 All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( )
// +----------------------------------------------------------------------
// | Author: liu21st
// +----------------------------------------------------------------------
// 入口檔案
// 記錄開始執行時間
$GLOBALS['_beginTime'] = microtime(TRUE);
// 記錄記憶體初始使用
define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));
//LIHUAN:定義常量MEMORY_LIMIT_ON,如果存在函式memory_get_usage,MEMORY_LIMIT_ON的值為1,否則為0;memory_get_usage()獲取當前記憶體值
if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();//LIHUAN:如果MEMORY_LIMIT_ON的值為1,獲取:記憶體初始值$GLOBALS['_startUseMems']
// 系統目錄定義
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');//LIHUAN:設定當前的專案路徑
defined('APP_DEBUG') or define('APP_DEBUG',false); // 是否除錯模式,LIHUAN:預設false
if(defined('ENGINE_NAME')) {//LIHUAN:檢查是否定義了引擎擴充套件,如果定義了,則執行擴充套件引擎檔案
defined('ENGINE_PATH') or define('ENGINE_PATH',THINK_PATH.'Extend/Engine/');//LIHUAN:引擎擴充套件目錄設定
require ENGINE_PATH.strtolower(ENGINE_NAME).'.php';//匯入引擎檔案,ENGINE_NAME為檔名稱,字尾為.php
}
else{
defined('RUNTIME_PATH') or define('RUNTIME_PATH',APP_PATH.'Runtime/');//LIHUAN:設定runtime的路徑
$runtime = defined('MODE_NAME')?'~'.strtolower(MODE_NAME).'_runtime.php':'~runtime.php';//LIHUAN:定義快取檔名,如果沒有定義檔名,預設為~runtime.php
defined('RUNTIME_FILE') or define('RUNTIME_FILE',RUNTIME_PATH.$runtime);//LIHUAN:定義檔案存放地址(帶檔名)
if(!APP_DEBUG && is_file(RUNTIME_FILE)) {//LIHUAN:在未開啟除錯模式並且快取檔案存在的情況下,直接執行快取檔案
// 部署模式直接載入執行快取
require RUNTIME_FILE;
}else{
// 載入執行時檔案
require THINK_PATH.'Common/runtime.php';
}
}
//LIHUAN:後面的內容為本人新增的註釋,其他註釋為原有內容,如有不當之處,歡迎批評指正
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4650/viewspace-2802004/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【原始碼解析】- ArrayList原始碼解析,絕對詳細原始碼
- Spark原始碼-SparkContext原始碼解析Spark原始碼Context
- CountDownLatch原始碼解析CountDownLatch原始碼
- LeakCanary原始碼解析原始碼
- vuex原始碼解析Vue原始碼
- ArrayBlockQueue原始碼解析BloC原始碼
- AsyncTask原始碼解析原始碼
- CopyOnWriteArrayList原始碼解析原始碼
- Express原始碼解析Express原始碼
- Observer原始碼解析Server原始碼
- SparseArray 原始碼解析原始碼
- RecyclerView原始碼解析View原始碼
- Promise 原始碼解析Promise原始碼
- Koa原始碼解析原始碼
- RateLimiter原始碼解析MIT原始碼
- redux原始碼解析Redux原始碼
- SDWebImage原始碼解析Web原始碼
- CyclicBarrier原始碼解析原始碼
- Semaphore原始碼解析原始碼
- Exchanger原始碼解析原始碼
- AbstractQueuedSynchronizer原始碼解析原始碼
- OKio原始碼解析原始碼
- Koa 原始碼解析原始碼
- RxPermission原始碼解析原始碼
- MyBatis原始碼解析MyBatis原始碼
- ArrayList原始碼解析原始碼
- Aspects 原始碼解析原始碼
- LeakCanary 原始碼解析原始碼
- Vue原始碼解析Vue原始碼
- React原始碼解析React原始碼
- ButterKnife原始碼解析原始碼
- HashSet原始碼解析原始碼
- Retrofit 原始碼解析原始碼
- Javapoet原始碼解析Java原始碼
- Vuex 原始碼解析Vue原始碼
- OKHttp原始碼解析HTTP原始碼
- Retrofit原始碼解析原始碼
- Handler原始碼解析原始碼