ThinkPHP的系統流程

2021-09-01 00:04:29 字數 2076 閱讀 6111

由於在專案中使用的是tp框架,可是發現雖然一直在用,但其實並沒有深入了解,也不是很清楚具體的流程。於是在手冊上查閱了一下,僅供參考。

thinkphp框架開發的應用的標準執行流程如下:

使用者url請求 

呼叫應用入口檔案(通常是**的index.php)

載入框架入口檔案(thinkphp.php)

記錄初始執行時間和記憶體開銷

系統常量判斷及定義

載入框架引導類(think\think)並執行think::start方法進行應用初始化

設定錯誤處理機制和自動載入機制

呼叫think\storage類進行儲存初始化(由storage_type常量定義儲存型別)

部署模式下如果存在應用編譯快取檔案則直接載入(直接跳轉到步驟22)

載入當前應用模式定義的核心檔案(普通模式是 thinkphp/mode/common.php)

載入慣例配置檔案(普通模式是 thinkphp/conf/convention.php)

載入系統別名定義

載入系統行為定義

載入框架底層語言包(普通模式是 thinkphp/lang/zh-cn.php)

如果是部署模式則生成應用編譯快取檔案

載入除錯模式系統配置檔案(thinkphp/conf/debug.php)

判斷並載入動態配置和函式檔案

呼叫think\dispatcher::dispatch方法進行url請求排程

自動識別相容url模式和命令列模式下面的$_server['path_info']引數

分析url位址中的path_info資訊

獲取請求的模組資訊

檢測模組是否存在和允許訪問

判斷並載入模組配置檔案、別名定義、行為定義及函式檔案

判斷並載入模組的動態配置和函式檔案

模組的url模式判斷

模組的路由檢測(url_router_on開啟)

path_info處理(path_info)標籤位偵聽並執行繫結行為

url字尾檢測(url_deny_suffix以及url_html_suffix處理)

獲取當前控制器和操作,以及url其他引數

url請求排程完成(url_dispatch)標籤位偵聽並執行繫結行為

呼叫session_options配置引數進行session初始化(如果不是命令列模式)

根據請求執行控制器方法

如果控制器不存在則檢測空控制器是否存在

控制器開始(action_begin)標籤位偵聽並執行繫結行為

預設呼叫系統的readhtmlcache行為讀取靜態快取(html_cache_on引數開啟)

判斷並呼叫控制器的_initialize初始化方法

判斷操作方法是否存在,如果不存在則檢測是否定義空操作方法

判斷前置操作方法是否定義,有的話執行

action引數繫結檢測,自動匹配操作方法的引數

如果有模版渲染(呼叫控制器display方法)

檢視開始(view_begin)標籤位偵聽並執行繫結行為

呼叫think\view的fetch方法解析並獲取模版內容

自動識別當前主題以及定位模版檔案

視**析(view_parse)標籤位偵聽並執行繫結行為

預設呼叫內建parsetemplate行為解析模版(普通模式下面)

模版引擎解析模版內容後生成模版快取

模版過濾替換(template_filter)標籤位偵聽並執行繫結行為

預設呼叫系統的contentreplace行為進行模版替換

輸出內容過濾(view_filter)標籤位偵聽並執行繫結行為

預設呼叫系統的writehtmlcache行為寫入靜態快取(html_cache_on引數開啟)

呼叫think\view類的render方法輸出渲染內容

檢視結束(view_end)標籤位偵聽並執行繫結行為

判斷後置操作方法是否定義,有的話執行

控制器結束(action_end)標籤位偵聽並執行繫結行為

執行系統的showpagetrace行為(show_page_trace引數開啟並且不是ajax請求)

日誌資訊儲存寫入

如果你繫結了更多的應用行為的話,流程可能會更加複雜。

ThinkPHP系統流程

流程圖 參考 1 使用者url請求 2 呼叫應用入口檔案 通常是 的index.php 3 載入框架入口檔案 thinkphp.php 4記錄初始執行時間和記憶體開銷 5系統常量判斷及定義 6 載入框架引導類 think think 並執行think start方法進行應用初始化 7設定錯誤處理機制...

thinkphp 系統變數

root 入口檔案所在目錄 url 預設的當前路徑 除了常規變數的輸出外,模板引擎還支援系統變數和系統常量 以及系統特殊變數的輸出。它們的輸出不需要事先賦值給某個模板變數。系統變數的輸出必須以 think.打頭,並且仍然可以支援使用函式。常用的系統變數輸出包括下面 用法含義 例子 think.ser...

ThinkPHP系統常量

root 當前專案 入口檔案 位址 url 當前模組位址 action 當前操作位址 self 當前url 位址 current 當前模組的模板目錄 action name 當前操作名稱 當前專案目錄 當前專案名稱 專案模板目錄 專案公共檔案目錄 cache path 專案模版快取目錄 config...