
2014-06-26 |&nb★®sp; 發布者:梁國(guó)£₩芳 |  ♠; 查看(kàn):3320次
Thinkphp我們來(lái)系統的(de)了(le)解下(xià↕✘×)ThinkPHP框架開(kāi)發的(de)應用(yò¥<"αng)的(de)标準執行(xíng)流程:
用(yòng)戶URL請(qǐng)求調用(yòng)應用(yòng)入口文(wén)件(jiàn)(通(tōn↓®δ g)常是(shì)網站(zhàn)的(de)₩σindex.php)載入框架入口文(wén)件(jiàn)(ThinkPHP.php)記錄初始運行(xíng)時(shí)間(jiān)和(hé÷ ♥)內(nèi)存開(kāi)銷系統常量判斷及定義載入框架引導類(Think\Think)并執行(xíng)Think::start方法進行(xíng)應用(yòng)初始化(huà)設置錯(cuò)誤處理(lǐ)機(jī)制(zhì)和(≥σhé)自(zì)動加載機(jī)制(zh ₽ì)調用(yòng)Think\Storage類進行(xíng)存儲初始化(huà)(由STORAGE_TYPE常量定義存儲類型)部署模式下(xià)如(rú)果存在應用(yòng)編譯緩存文(w★★én)件(jiàn)則直接加載(直接跳(tiào)轉到(dào)步驟22)讀(dú)取應用(yòng)模式(由APP_MODE常量定義)的(de)定義文(wén)件(jiàn)(以下♥☆♥(xià)以普通(tōng)模式為(wèi)例說(s¶₹huō)明(míng))加載當前應用(yòng)模式定義的(de)核心文(↑✘©wén)件(jiàn)(普通(tōng)模式是(shì) ThinkPHP/Mode/common.php)加載慣例配置文(wén)件(jiàn)(普通(♦™εtōng)模式是(shì) ThinkPHP/Conf/convention.php)加載應用(yòng)配置文(wén)件(jiàn)(普通(tōng)©π'模式是(shì) Application/Common/Conf/config.php)加載系統别名定義判斷并讀(dú)取應用(yòng)别名定義文(wéπγn)件(jiàn)(普通(tōng)模式是(shì→±) Application/Common/Conf/alias.php)加載系統行(xíng)為(wèi)定義判斷并讀(dú)取應用(yòng)行(xíng)為(wèi)定義文$∑∑(wén)件(jiàn)(普通(tōng)模式§δ♦是(shì) Application/Common/Conf/tags.php)加載框架底層語言包(普通(tōng)模式是(shì) ThinkPHP/Lang/zh-cn.php)如(rú)果是(shì)部署模式則生(shēng)成應用(yò≥♠σng)編譯緩存文(wén)件(jiàn)加載調試模式系統配置文(wén)件(jiàn)≈÷(ThinkPHP/Conf/debug.php)判斷并讀(dú)取應用(yòng)的(de)調試配置文$↓(wén)件(jiàn)(默認是(shì± ) Application/Common/Conf/debug.php)判斷應用(yòng)狀态并讀(dú)取狀态配置文(wén)件(jiàn)∑β♥(如(rú)果APP_STATUS常量定義不(bù)為(wèi)空(kōng)的(de)話(huà♦≤★))檢測應用(yòng)目錄結構并自(zì)動生(shēng)成(如(rαú)果CHECK_APP_DIR配置開(kāi)啓并且RUNTIME_PATH目錄不(bù)存在的(de)情況下(xià))調用(yòng)Think\App類的(de)run方法啓動應用(yòng)應用(yòng)初始化(huà)(app_init)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng↕©)為(wèi)判斷并加載動态配置和(hé)函數(shù)文(wén)件(j☆>®←iàn)調用(yòng)Think\Dispatcher::dispatch方法進行(xíng)URL請(qǐng)求調度自(zì)動識别兼容URL模式和(hé)命令行(xíng)模式下(xià)面的(de)$_SERVER['PATH_INFO']參數(shù)檢測域名部署以及完成模塊和(hé)控制(zαλ≠hì)器(qì)的(de)綁定操作(zuò)(APP_SUB_DOMAIN_DEPLOY參數(shù)開(kāi)啓)分(fēn)析URL地(dì)址中的(de)PATH_INFO信息獲取請(qǐng)求的(de)模塊信息檢測模塊是(shì)否存在和(hé)允許訪問(wèn)判斷并加載模塊配置文(wén)件(jiàn)、别名定義、行ε÷(xíng)為(wèi)定義及函數(shù)>↑Ω文(wén)件(jiàn)判斷并加載模塊的(de)動态配置和(hé)函數(shù)文(wén)₩≥件(jiàn)模塊的(de)URL模式判斷模塊的(de)路(lù)由檢測(URL_ROUTER_ON開(kāi)啓)PATH_INFO處理(lǐ)(path_info)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)γ♣URL後綴檢測(URL_DENY_SUFFIX以及URL_HTML_SUFFIX處理(lǐ))獲取當前控制(zhì)器(qì)和(hé)操作(zuò),以及URL其他(tā)參數(shù)URL請(qǐng)求調度完成(url_dispatch)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)應用(yòng)開(kāi)始(app_begin)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèiΩ&±)調用(yòng)SESSION_OPTIONS配置參數(shù)進行(xíng)Session初始化(huà)(如(rú)果不(bù)是(shì)命令行α↓(xíng)模式)根據請(qǐng)求執行(xíng)控制(zhì)器(qì)'₹€★方法如(rú)果控制(zhì)器(qì)不(bù)"•存在則檢測空(kōng)控制(zhì)器(qì)是(shì)否存在控制(zhì)器(qì)開(kāi)始(action_begin)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(w$≈€€èi)默認調用(yòng)系統的(de)ReadHtmlCache行(xíng)為(wèi)讀(dú)取靜(jìng)态緩存(≤€£HTML_CACHE_ON參數(shù)開(kāi)啓)判斷并調用(yòng)控制(zhì)器(qì)的§¥(de)_initialize初始化(huà)方法判斷操作(zuò)方法是(shì)否存在,≥如(rú)果不(bù)存在則檢測是(shì)否定義空(kōng)操作(zuò±♠)方法判斷前置操作(zuò)方法是(shì)否定¶→義,有(yǒu)的(de)話(huà)執行(xíng)φAction參數(shù)綁定檢測,自(zì)動匹配操作(zuò)方法的(σ∑ de)參數(shù)如(rú)果有(yǒu)模版渲染(調用(yòng)控制(zhì)器(♣≤♠≈qì)display方法)視(shì)圖開(kāi)始(view_begin)标簽位偵聽(tīng)并執行(xíng)綁定•π行(xíng)為(wèi)調用(yòng)Think\View的(de)fetch方法解析并獲取模版內(nèi)容自(zì)動識别當前主題以及定位模版文(wén)件(jiàn)視(shì)圖解析(view_parse)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)默認調用(yòng)內(nèi)置ParseTemplate行(xíng)為(wèi)解析模版(普通(tōng)模α≠式下(xià)面)模版引擎解析模版內(nèi)容後生(shēng)成模版 ☆♦緩存模版過濾替換(template_filter)标簽位偵聽(tīng)并執行(xíng)綁定行(xín©§ g)為(wèi)默認調用(yòng)系統的(de)ContentReplace行(xíng)為(wèi)進行(xíng)模版替換輸出內(nèi)容過濾(view_filter)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)默認調用(yòng)系統的(de)WriteHtmlCache行(xíng)為(wèi)寫入靜(jìng)态緩存(HTML_CACHE_ON參數(shù)開(kāi)啓)調用(yòng)Think\View類的(de)render方法輸出渲染內(nèi)容視(shì)圖結束(view_end)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(w∏♥∏èi)判斷後置操作(zuò)方法是(shì)否定義,有↕♦®(yǒu)的(de)話(huà)執行(xíng)控制(zhì)器(qì)結束(action_end)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi© ××)應用(yòng)結束(app_end)标簽位偵聽(tīng)并執行(xíng)綁定行×★(xíng)為(wèi)執行(xíng)系統的(de)ShowPageTrace行(xíng)為(wèi)(SHOW_PAGE_TRACE參數(shù)開(kāi)啓并且不(bù)是(sh≥↕$ì)AJAX請(qǐng)求)日(rì)志(zhì)信息存儲寫入
