ThinkPHP3 2 載入過程(一)

2021-09-22 20:47:48 字數 3466 閱讀 3918

原文:

thinkphp3.2 載入過程(一)

載入過程(官方介紹) :

使用者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請求)

日誌資訊儲存寫入

**:

1.入口檔案(index.php)

// 檢測php環境

if(version_compare(php_version,'5.3.0','<')) die('require php > 5.3.0 !');

// 開啟除錯模式 建議開發階段開啟 部署階段注釋或者設為false

// 定義應用目錄

// 引入thinkphp入口檔案

require './thinkphp/thinkphp.php';

3.也是最重要的乙個  引入thinkphp的入口,這裡開始,正式開始進行複雜而又簡單的tp框架之旅了,沒有帶好裝備的人,可以帶上裝備,去刷tp框架了。

鄙人跟蹤tp原始碼,在不對tp進行任何修改的情況下介紹頁面是如何出現的

( ps:  由於鄙人也是第一次學tp框架  同樣也是剛開始學php  希望在這裡寫上一點自己的心得  一來對自己思路做整理  同樣也希望能幫助大家   如果有什麼錯誤  希望大家提出 )

ThinkPHP 3 2 開發過程

原文 thinkphp 3.2 開發過程 配置禁止客戶端訪問的模組 module deny list array common sae配置 修改入口檔案index.php 在require前增加 define storage type sae 建立mvc結構 home controller home...

ThinkPHP3 2 驗證隨記

自動完成 靜態方式 在模型類裡面通過 auto屬性定義處理規則。動態方式 使用模型類的auto方法動態建立自動處理規則。自動驗證 靜態方式 在模型類裡面通過 validate屬性定義驗證規則。動態方式 使用模型類的validate方法動態建立自動驗證規則。定義格式為 array array 驗證欄位...

THINKPHP3 2命名空間

thinkphp3.2命名空間 3.2版本全面採用命名空間方式定義和載入類庫檔案,有效的解決多個模組之間的衝突問題,並且實現了更加高效的類庫自動載入機制。由於新版完全採用了命名空間的特性,因此只需要給類庫正確定義所在的命名空間,而命名空間的路徑與類庫檔案的目錄一致,那麼就可以實現類的自動載入。例如,...