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