ThinkPHP3.1.3源碼分析(一) 入口文件分析
前言:
有幾個(gè)月時(shí)間沒有更新CSDN博客,持之以恒的徽章也滅了,接下來這個(gè)幾個(gè)月會(huì)
逐漸更新 主流PHP框架的入門,源碼分析,框架對(duì)比。加油!
一、示例代碼
//文件路徑?ThinkPHP/ThinkPHP.php //?ThinkPHP?入口文件 //?記錄開始運(yùn)行時(shí)間 $GLOBALS['_beginTime']?=?microtime(TRUE); //?記錄內(nèi)存初始使用 define('MEMORY_LIMIT_ON',function_exists('memory_get_usage')); if(MEMORY_LIMIT_ON)?$GLOBALS['_startUseMems']?=?memory_get_usage(); //?系統(tǒng)目錄定義 defined('THINK_PATH')? or?define('THINK_PATH',?dirname(__FILE__).'/');/*ThinkPHP?文件目錄*/ defined('APP_PATH')? or?define('APP_PATH',?dirname($_SERVER['SCRIPT_FILENAME']).'/');/*項(xiàng)目文件目錄*/ defined('APP_DEBUG')? or?define('APP_DEBUG',false);?//?是否調(diào)試模式 if(defined('ENGINE_NAME'))?{?/*是否啟用云引擎?eg:BAE,SAE*/ ????defined('ENGINE_PATH')?or?define('ENGINE_PATH',THINK_PATH.'Extend/Engine/'); require?ENGINE_PATH.strtolower(ENGINE_NAME).'.php'; }else{ ????defined('RUNTIME_PATH')?or?define('RUNTIME_PATH',APP_PATH.'Runtime/');/*運(yùn)行時(shí)文件目錄*/ ????/*運(yùn)行時(shí)文件名(MODE_NAME?為ThinkPHP的運(yùn)行模式擴(kuò)展) eg:?簡潔模式 精簡模式 命令模式 AMF模式? PHPRPC模式? REST模式 自定義模式擴(kuò)展 詳情親看?ThinkPHP文檔?模式擴(kuò)展 ????*/ $runtime?=?defined('MODE_NAME')?'~'.strtolower(MODE_NAME).'_runtime.php':'~runtime.php'; defined('RUNTIME_FILE')?or?define('RUNTIME_FILE',RUNTIME_PATH.$runtime);?/*運(yùn)行時(shí)文件*/ if(!APP_DEBUG?&&?is_file(RUNTIME_FILE))?{ ????//?部署模式直接載入運(yùn)行緩存 ????require?RUNTIME_FILE; }else{ ????//?加載運(yùn)行時(shí)文件 ????require?THINK_PATH.'Common/runtime.php'; } }
備注:每一行都有注釋 ?// 開頭的是 官方注釋,/**/為我自己的注釋
一、介紹:
在項(xiàng)目的index.php文件中,引用ThinkPHP.php文件,就正式啟用的ThinkPHP框架
二、代碼作用
1.定義了系統(tǒng)目錄
2.判斷系統(tǒng)是否啟用?運(yùn)行模式擴(kuò)展?,是否啟用云引擎?
3.載入 運(yùn)行時(shí)文件runtime.php?
runtime文件的加載規(guī)則
a.調(diào)試模式(APP_DEBUG=true)下,每次都會(huì)加載 Common/runtime.php文件
b.其他模式下會(huì)判斷是否存在 runtime.php的緩存文件, 存在著直接加載緩存文件,
開啟了運(yùn)行模式擴(kuò)展,緩存文件名為 ??模式擴(kuò)展名_runtime.php
? ? ? ??未開啟著為 ~runtime.php這個(gè)是最常見的,運(yùn)行模式擴(kuò)展基本不用
三、值得說的編程小細(xì)節(jié):
1. ?defined(***) or define(***) 語句
在平常的編程中,一般采用
if(!defined(***)) { define(***); }