【小(xiǎo)編推薦】ThinkPHP3.±®2——系統流程

2014-06-26   |&nb★®sp;  發布者:梁國(guó)£₩芳   |  ♠;  查看(kàn):3320次

Thinkphp

我們來(lái)系統的(de)了(le)解下(xià↕✘×)ThinkPHP框架開(kāi)發的(de)應用(yò¥<"αng)的(de)标準執行(xíng)流程:

  1. 用(yòng)戶URL請(qǐng)求
  2. 調用(yòng)應用(yòng)入口文(wén)件(jiàn)(通(tōn↓®δ g)常是(shì)網站(zhàn)的(de)₩σindex.php
  3. 載入框架入口文(wén)件(jiàn)(ThinkPHP.php
  4. 記錄初始運行(xíng)時(shí)間(jiān)和(hé÷ ♥)內(nèi)存開(kāi)銷
  5. 系統常量判斷及定義
  6. 載入框架引導類(Think\Think)并執行(xíng)Think::start方法進行(xíng)應用(yòng)初始化(huà)
  7. 設置錯(cuò)誤處理(lǐ)機(jī)制(zhì)和(≥σhé)自(zì)動加載機(jī)制(zh ₽ì)
  8. 調用(yòng)Think\Storage類進行(xíng)存儲初始化(huà)(由STORAGE_TYPE常量定義存儲類型)
  9. 部署模式下(xià)如(rú)果存在應用(yòng)編譯緩存文(w★★én)件(jiàn)則直接加載(直接跳(tiào)轉到(dào)步驟22
  10. 讀(dú)取應用(yòng)模式(由APP_MODE常量定義)的(de)定義文(wén)件(jiàn)(以下♥☆‌♥(xià)以普通(tōng)模式為(wèi)例說(s¶₹huō)明(míng))
  11. 加載當前應用(yòng)模式定義的(de)核心文(↑✘©‌wén)件(jiàn)(普通(tōng)模式是(shì) ThinkPHP/Mode/common.php
  12. 加載慣例配置文(wén)件(jiàn)(普通(♦™εtōng)模式是(shì) ThinkPHP/Conf/convention.php
  13. 加載應用(yòng)配置文(wén)件(jiàn)(普通(tōng)©π'‍模式是(shì) Application/Common/Conf/config.php
  14. 加載系統别名定義
  15. 判斷并讀(dú)取應用(yòng)别名定義文(wéπγn)件(jiàn)(普通(tōng)模式是(shì→±) Application/Common/Conf/alias.php
  16. 加載系統行(xíng)為(wèi)定義
  17. 判斷并讀(dú)取應用(yòng)行(xíng)為(wèi)定義文$∑∑(wén)件(jiàn)(普通(tōng)模式§δ♦是(shì) Application/Common/Conf/tags.php
  18. 加載框架底層語言包(普通(tōng)模式是(shì) ThinkPHP/Lang/zh-cn.php
  19. 如(rú)果是(shì)部署模式則生(shēng)成應用(yò≥♠σng)編譯緩存文(wén)件(jiàn)
  20. 加載調試模式系統配置文(wén)件(jiàn)≈÷(ThinkPHP/Conf/debug.php
  21. 判斷并讀(dú)取應用(yòng)的(de)調試配置文$↓(wén)件(jiàn)(默認是(shì± ‍‍) Application/Common/Conf/debug.php
  22. 判斷應用(yòng)狀态并讀(dú)取狀态配置文(wén)件(jiàn)∑β♥(如(rú)果APP_STATUS常量定義不(bù)為(wèi)空(kōng)的(de)話(huà♦≤★))
  23. 檢測應用(yòng)目錄結構并自(zì)動生(shēng)成(如(r​αú)果CHECK_APP_DIR配置開(kāi)啓并且RUNTIME_PATH目錄不(bù)存在的(de)情況下(xià))
  24. 調用(yòng)Think\App類的(de)run方法啓動應用(yòng)
  25. 應用(yòng)初始化(huà)(app_init)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng↕©)為(wèi)
  26. 判斷并加載動态配置和(hé)函數(shù)文(wén)件(j☆>®←iàn)
  27. 調用(yòng)Think\Dispatcher::dispatch方法進行(xíng)URL請(qǐng)求調度
  28. 自(zì)動識别兼容URL模式和(hé)命令行(xíng)模式下(xià)面的(de)$_SERVER['PATH_INFO']參數(shù)
  29. 檢測域名部署以及完成模塊和(hé)控制(zαλ≠hì)器(qì)的(de)綁定操作(zuò)(APP_SUB_DOMAIN_DEPLOY參數(shù)開(kāi)啓)
  30. 分(fēn)析URL地(dì)址中的(de)PATH_INFO信息
  31. 獲取請(qǐng)求的(de)模塊信息
  32. 檢測模塊是(shì)否存在和(hé)允許訪問(wèn)
  33. 判斷并加載模塊配置文(wén)件(jiàn)、别名定義、行ε÷(xíng)為(wèi)定義及函數(shù)>↑Ω文(wén)件(jiàn)
  34. 判斷并加載模塊的(de)動态配置和(hé)函數(shù)文(wén)₩≥件(jiàn)
  35. 模塊的(de)URL模式判斷
  36. 模塊的(de)路(lù)由檢測(URL_ROUTER_ON開(kāi)啓)
  37. PATH_INFO處理(lǐ)(path_info)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)γ♣​
  38. URL後綴檢測(URL_DENY_SUFFIX以及URL_HTML_SUFFIX處理(lǐ))
  39. 獲取當前控制(zhì)器(qì)和(hé)操作(zuò),以及URL其他(tā)參數(shù)
  40. URL請(qǐng)求調度完成(url_dispatch)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)
  41. 應用(yòng)開(kāi)始(app_begin)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèiΩ&±)
  42. 調用(yòng)SESSION_OPTIONS配置參數(shù)進行(xíng)Session初始化(huà)(如(rú)果不(bù)是(shì)命令行α↓(xíng)模式)
  43. 根據請(qǐng)求執行(xíng)控制(zhì)器(qì)'₹€★方法
  44. 如(rú)果控制(zhì)器(qì)不(bù)"•存在則檢測空(kōng)控制(zhì)器(qì)是(shì)否存在
  45. 控制(zhì)器(qì)開(kāi)始(action_begin)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(w$≈€€èi)
  46. 默認調用(yòng)系統的(de)ReadHtmlCache行(xíng)為(wèi)讀(dú)取靜(jìng)态緩存(≤€£​HTML_CACHE_ON參數(shù)開(kāi)啓)
  47. 判斷并調用(yòng)控制(zhì)器(qì)的§‍¥(de)_initialize初始化(huà)方法
  48. 判斷操作(zuò)方法是(shì)否存在,‌≥如(rú)果不(bù)存在則檢測是(shì)否定義空(kōng)操作(zuò±♠)方法
  49. 判斷前置操作(zuò)方法是(shì)否定¶→義,有(yǒu)的(de)話(huà)執行(xíng)‍φ
  50. Action參數(shù)綁定檢測,自(zì)動匹配操作(zuò)方法的(σ∑ de)參數(shù)
  51. 如(rú)果有(yǒu)模版渲染(調用(yòng)控制(zhì)器(♣≤♠≈qì)display方法)
  52. 視(shì)圖開(kāi)始(view_begin)标簽位偵聽(tīng)并執行(xíng)綁定•π行(xíng)為(wèi)
  53. 調用(yòng)Think\View的(de)fetch方法解析并獲取模版內(nèi)容
  54. 自(zì)動識别當前主題以及定位模版文(wén)件(jiàn)
  55. 視(shì)圖解析(view_parse)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)
  56. 默認調用(yòng)內(nèi)置ParseTemplate行(xíng)為(wèi)解析模版(普通(tōng)模α≠式下(xià)面)
  57. 模版引擎解析模版內(nèi)容後生(shēng)成模版 ‌☆♦緩存
  58. 模版過濾替換(template_filter)标簽位偵聽(tīng)并執行(xíng)綁定行(xín©§ g)為(wèi)
  59. 默認調用(yòng)系統的(de)ContentReplace行(xíng)為(wèi)進行(xíng)模版替換
  60. 輸出內(nèi)容過濾(view_filter)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi)
  61. 默認調用(yòng)系統的(de)WriteHtmlCache行(xíng)為(wèi)寫入靜(jìng)态緩存(HTML_CACHE_ON參數(shù)開(kāi)啓)
  62. 調用(yòng)Think\View類的(de)render方法輸出渲染內(nèi)容
  63. 視(shì)圖結束(view_end)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(w∏♥∏èi)
  64. 判斷後置操作(zuò)方法是(shì)否定義,有↕♦®(yǒu)的(de)話(huà)執行(xíng)
  65. 控制(zhì)器(qì)結束(action_end)标簽位偵聽(tīng)并執行(xíng)綁定行(xíng)為(wèi© ××)
  66. 應用(yòng)結束(app_end)标簽位偵聽(tīng)并執行(xíng)綁定行×★(xíng)為(wèi)
  67. 執行(xíng)系統的(de)ShowPageTrace行(xíng)為(wèi)(SHOW_PAGE_TRACE參數(shù)開(kāi)啓并且不(bù)是(sh≥‌↕$ì)AJAX請(qǐng)求)
  68. 日(rì)志(zhì)信息存儲寫入