久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

ThinkPHP2.2框架執(zhí)行流程圖,ThinkPHP控制器的執(zhí)行流程

 quasiceo 2014-11-23

ThinkPHP2.2框架執(zhí)行流程圖,ThinkPHP控制器的執(zhí)行流程    

作者:SNSGOU 發(fā)布于:2012-06-29 23:15:23  分類:PHP   標(biāo)簽: PHP框架  評論(0)  瀏覽(2052) 

ThinkPHP2.2框架執(zhí)行原理,、流程圖在線手冊



 

ThinkPHP控制器的執(zhí)行流程

對用戶的第一次URL訪問 http://<serverIp>/My/index.php/Index/show/ 所執(zhí)行的流程進(jìn)行詳細(xì)的分析,用戶的URL訪問首先是定位到了My項(xiàng)目的index.php 入口文件(注意:如果使用了URL_REWRITE,,可能index.php已經(jīng)被隱藏了),,項(xiàng)目的入口文件所做的其實(shí)是實(shí)例化一個(gè)App應(yīng)用實(shí)例,并且執(zhí)行這個(gè)應(yīng)用,。

1,、加載公共入口文件

在實(shí)例化App類之前,,我們需要首先加載系統(tǒng)的公共入口文件ThinkPHP.php,這個(gè)文件是ThinkPHP的總?cè)肟?,讓我們來一探究竟,。在加載ThinkPHP.php文件的過程中,其實(shí)完成了下面的操作:

  • 記錄開始執(zhí)行時(shí)間 $GLOBALS['_beginTime'],;
  • 檢測THINK_PATH定義,,如果沒有則創(chuàng)建;
  • 檢測項(xiàng)目名稱APP_NAME,,如果沒有則按照一定規(guī)則自動(dòng)定義,;
  • 檢測項(xiàng)目編譯緩存目錄定義,沒有則取項(xiàng)目的Temp目錄,;
  • 加載系統(tǒng)定義文件defines.php和公共函數(shù)文件functions.php,;
  • 如果項(xiàng)目編譯緩存目錄不存在,則自動(dòng)創(chuàng)建項(xiàng)目目錄結(jié)構(gòu),;
  • 加載系統(tǒng)核心類庫(包括Base,、App、Action,、Model,、View、ThinkException,、Log),;
  • 如果PHP版本低于5.2.0則加載兼容函數(shù)庫compat.php;
  • 生成核心編譯緩存~runtime.php,;
  • 記錄加載文件時(shí)間 $GLOBALS['_loadTime'],;

2、 項(xiàng)目初始化init

在加載完成ThinkPHP的公共入口文件之后,,我們就開始執(zhí)行應(yīng)用了,,而首先應(yīng)該是初始化App應(yīng)用。

  • 設(shè)定錯(cuò)誤和異常處理機(jī)制(set_error_handler和set_exception_handler),;
  • 項(xiàng)目預(yù)編譯并載入,;
  • 設(shè)置時(shí)區(qū)支持;
  • Session過濾器檢查,;
  • session初始化,;
  • 檢查并加載插件;
  • URL分析和調(diào)度,;
  • 獲取當(dāng)前執(zhí)行的模塊和操作名,;
  • 加載模塊配置文件;
  • 頁面防刷新機(jī)制檢查,;
  • 語言檢查并讀取對應(yīng)的語言文件,;
  • 模板檢查并定義相關(guān)的模板變量,;
  • RBAC權(quán)限檢測;
  • 如果開啟靜態(tài)寫入則讀取靜態(tài)緩存文件,;
  • 應(yīng)用初始化過濾插件 app_init,;
  • 記錄應(yīng)用初始化時(shí)間 $GLOBALS['_initTime']

3、 項(xiàng)目預(yù)編譯

  • 加載系統(tǒng)慣例配置文件convention.php,;
  • 加載項(xiàng)目配置文件 config.php,;
  • 加載項(xiàng)目公共文件 common.php;
  • 如果是調(diào)試模式加載系統(tǒng)調(diào)試配置文件 debug.php,;
  • 如果定義了項(xiàng)目的調(diào)試配置文件則載入 debug.php,;
  • 生成項(xiàng)目編譯緩存文件~app.php;

4,、 URL分析Dispatcher

  • 檢查當(dāng)前URL模式URL_MODEL,;
  • 如果存在$_GET變量,則根據(jù)當(dāng)前的URL模式和設(shè)置進(jìn)行重定向,;
  • 進(jìn)行路由定義檢測,;
  • 分析PATH_INFO的URL信息到數(shù)組;
  • 把PATH_INFO得到的值和$_GET合并,;

5,、 獲取模塊和操作名

  • 檢查VAR_MODULE變量(包括GET 和POST),如果未定義,,則獲取默認(rèn)模塊名,;
  • 檢查組件模塊;
  • 檢查模塊偽裝,;
  • 檢查VAR_ACTION變量(包括GET 和POST),,如果未定義,則獲取默認(rèn)操作名,;
  • 檢查操作鏈,;
  • 檢查操作偽裝,;

6,、 項(xiàng)目執(zhí)行exec

  • AUTO_LOAD_CLASS 檢查 如果有則導(dǎo)入公共類;
  • 實(shí)例化當(dāng)前模塊的Action控制器類;
  • 如果Action控制器不存在則檢查空模塊 EmptyAction;
  • 檢查操作鏈,如果有執(zhí)行操作鏈,;
  • 檢查前置操作方法 _before_操作名,;
  • 執(zhí)行模塊的操作方法,調(diào)度轉(zhuǎn)移給Action控制器,;
  • 執(zhí)行后置操作方法 _after_操作名,;
  • 執(zhí)行應(yīng)用結(jié)束過濾器 app_end;
  • 如果開啟日志記錄,,寫入錯(cuò)誤日志,;

7,、 執(zhí)行控制器的操作

  • 實(shí)例化視圖類View;
  • 取得當(dāng)前控制器名稱,;
  • 控制器初始化_initialize,;
  • 如果操作方法不存在檢查空操作 _empty;
  • 如果空操作沒有定義則檢查對應(yīng)的模板文件,;
  • 調(diào)用模型獲取數(shù)據(jù),;
  • 渲染視圖進(jìn)行輸出;

8,、 調(diào)用模型獲取數(shù)據(jù)find

  • 實(shí)例化模型類,;
  • 模型初始化 _initialize;
  • 判斷當(dāng)前模型名稱和對應(yīng)數(shù)據(jù)表,;
  • 實(shí)例化數(shù)據(jù)庫操作對象,;
  • 數(shù)據(jù)表字段檢測并緩存;
  • 查詢需要的數(shù)據(jù),;
  • 判斷是否視圖模型,;
  • 如果是延時(shí)查詢返回ResultIterator對象;
  • 取出數(shù)據(jù)對象的時(shí)候記錄樂觀鎖,;
  • 獲取文本字段數(shù)據(jù),;
  • 獲取關(guān)聯(lián)數(shù)據(jù);
  • 對數(shù)據(jù)對象自動(dòng)編碼轉(zhuǎn)換,;
  • 記錄當(dāng)前數(shù)據(jù)對象,;
  • 返回定義的數(shù)據(jù)格式(數(shù)組或者stdClass對象)

9、 輸出視圖

  • 模板變量賦值,;
  • 檢測是否是布局輸出,;
  • 檢測頁面輸出編碼;
  • 緩存初始化過濾 ob_init;
  • 頁面緩存開啟ob_start;
  • 緩存開啟后執(zhí)行的過濾;
  • 模版文件名過濾 template_file;
  • 定位當(dāng)前輸出的模板文件,;
  • 模版變量過濾 template_var,;
  • 根據(jù)不同模版引擎進(jìn)行處理;
  • 如果是PHP模板引擎,,直接載入模板文件,;
  • 使用內(nèi)置模板引擎,檢測緩存有效期,;
  • 緩存無效則重新編譯模板文件,;
  • 載入模板緩存文件;
  • 獲取并清空緩存,;
  • 輸出編碼轉(zhuǎn)換,;
  • 輸出過濾 ob_content;
  • 開啟靜態(tài)寫入則寫入靜態(tài)文件;
  • 如果輸出則獲取視圖運(yùn)行時(shí)間,;
  • 如果是display則渲染模板輸出信息,;
  • 開啟頁面Trace則顯示頁面Trace信息;
  • 如果是fetch則返回模板輸出信息,;

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多