2 ThinkPHP5框架的生命周期:從發(fā)出請求到響應完成

URL請求的生命周期
客戶端通過URL發(fā)送訪問請求
服務器端返回請求數(shù)據(jù)

TP5的生命周期
入口文件-->引導文件-->注冊自動加載-->注冊錯誤和異常機制-->應用初始化-->URL訪問檢測-->路由檢測-->分發(fā)請求-->響應輸出-->應用結束

1.入口文件
-1.文件名:index.php;
-2.位置:public/index.php;
-3.用戶通過入口文件,發(fā)起服務請求,是整個應用的入口與起點;
-4.任務:定義常量,加載引導文件,不要放任何業(yè)務處理代碼;
-5.代碼: //定義項目路徑
define('APP_PATH',DIR.'/../application/');
//加載框架引導文件
require DIR.'/../thinkphp/start.php';

2.引導文件
-1.文件名:start.php;
-2.位置:thinkphp/start.php;
-.執(zhí)行: 加載常量-->加載環(huán)境變量-->注冊自動加載-->注冊錯誤與異常-->加載管理配置-->執(zhí)行應用

3.注冊自動加載
-1.類方法:Loader::register();
-2.作用:將所有符號規(guī)范的類庫(包括Composer依賴加載的第三方類庫)自動加載;
-3.執(zhí)行流程: 注冊自動加載方法: think\Loader::autoload --> 注冊系統(tǒng)命名空間 --> 加載類庫映射文件 --> 注冊Composer自動加載 --> 注冊extends擴展目錄

4.注冊錯誤和異常機制
執(zhí)行Error::register()注冊錯誤和異常處理1機制.
由三部分組成:
-1.應用關閉方法:think\Error::appShutdown
-2.錯誤處理方法:think\Error::appError
-3.異常處理方法:think\Error::appException

5.應用初始化
嚴格意義上講,前面的內(nèi)容都可算做應用初始化部分:
加載公共配置 --> 加載公共擴展配置 -->加載應用狀態(tài)配置 --> 加載別名配置 -->
--> 加載行為定義 --> 加載公共函數(shù)文件 -->注冊應用命名空間 --> 加載擴展函數(shù)文件 --> 設置默認時區(qū) --> 加載系統(tǒng)語言包

6.URL訪問檢測
URL必須是PATH_INFO格式才允許繼續(xù)運行.
1.PATH_INFO標準格式:
http://域名/index.php/模塊名/控制器名/操作名/參數(shù)鍵值對
舉例: http://tp5.com/index.php/index/user/add/id/10/name/peter
2.PHTH_INFO兼容格式:
http://域名/index.php?s=/模塊名/控制器名/操作名&參數(shù)鍵值對
舉例: http://tp5.com/index.php?s=index/user/add&id=10&name=peter

7.路由檢測
-1.如果開啟了url_route_on參數(shù),則首先進行URL路由檢測;
-2.一旦檢測到匹配的路由,根據(jù)路由規(guī)則會注冊到相應的URL調度;
-3.TP5支持的路由規(guī)則如下:

  • 路由到模塊/控制器/操作;(這是默認路由模式,如果關閉路由或者路由檢測無效則執(zhí)行該模式)
  • 路由到外部重定向地址;
  • 路由到控制器方法;
  • 路由到閉包函數(shù);
  • 路由到類的方法;

8.分發(fā)請求
-1.將用戶請求分發(fā)到對應的路由地址,完成應用的業(yè)務邏輯并返回數(shù)據(jù);
-2.統(tǒng)一使用return返回數(shù)據(jù),不要用echo直接輸出;
-3.如非必要,請不要使用exit或者die中斷執(zhí)行;
-4.分發(fā)請求支持TP5的五種路由地址模式:
路由到模塊/控制器/操作; 路由到外部重定向地址; 路由到控制器方法; 路由到閉包函數(shù); 路由到類方法;

9.響應輸出
-1.控制器正常返回的數(shù)據(jù)通常是:字符串(String)或數(shù)組(Array)格式;
-2.統(tǒng)一使用return返回數(shù)據(jù),而不是直接輸出,這樣可以自動調用
Response::send()方法將最終的返回數(shù)據(jù)輸出到頁面或者客戶端,
并自動轉換成default_return_type參數(shù)配置的格式(XML,JSON等).
return 'ThinkPHP教學教程';

10.應用結束
-1.響應輸出完成后,應用生命周期基本結束,可以寫日志報告啦;
-2.日志包括二部分:用戶調試輸出和系統(tǒng)自動生成;
-3.日志在應用結束后,自動寫入.

總結:介紹了TP5框架中,一個應用從發(fā)出url請求,到正確獲取到響應數(shù)據(jù)的完整流程.這里只是快速瀏覽,
執(zhí)行細節(jié)在后介紹.

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖寇漫,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哭当,居然都是意外死亡猪腕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門钦勘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陋葡,“玉大人,你說我怎么就攤上這事彻采「停” “怎么了捌归?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長岭粤。 經(jīng)常有香客問我惜索,道長,這世上最難降的妖魔是什么剃浇? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任巾兆,我火速辦了婚禮,結果婚禮上虎囚,老公的妹妹穿的比我還像新娘角塑。我一直安慰自己,他們只是感情好淘讥,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布圃伶。 她就那樣靜靜地躺著,像睡著了一般蒲列。 火紅的嫁衣襯著肌膚如雪窒朋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天蝗岖,我揣著相機與錄音侥猩,去河邊找鬼。 笑死剪侮,一個胖子當著我的面吹牛拭宁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓣俯,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼杰标,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了彩匕?” 一聲冷哼從身側響起腔剂,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驼仪,沒想到半個月后掸犬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡绪爸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年湾碎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奠货。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡介褥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柔滔,我是刑警寧澤溢陪,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站睛廊,受9級特大地震影響形真,放射性物質發(fā)生泄漏。R本人自食惡果不足惜超全,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一咆霜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卵迂,春花似錦裕便、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挂疆。三九已至改览,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缤言,已是汗流浹背宝当。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胆萧,地道東北人庆揩。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像跌穗,于是被迫代替她去往敵國和親订晌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345