ThinkPHP系統流程

2022-04-04 07:17:39 字數 2147 閱讀 4015

流程圖:

參考**:

1

使用者url請求

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

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

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

5系統常量判斷及定義

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

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

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

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

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

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

14載入系統別名定義

16載入系統行為定義

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

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

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

2223

2425

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

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

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

2930

分析url位址中的path_info資訊

31獲取請求的模組資訊

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

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

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

35模組的url模式判斷

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

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

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

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

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

4142

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

43根據請求執行控制器方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6667

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

68 日誌資訊儲存寫入

ThinkPHP的系統流程

由於在專案中使用的是tp框架,可是發現雖然一直在用,但其實並沒有深入了解,也不是很清楚具體的流程。於是在手冊上查閱了一下,僅供參考。thinkphp框架開發的應用的標準執行流程如下 使用者url請求 呼叫應用入口檔案 通常是 的index.php 載入框架入口檔案 thinkphp.php 記錄初始...

thinkphp 系統變數

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

ThinkPHP系統常量

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