溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

?Laravel請(qǐng)求到響應(yīng)的整個(gè)執(zhí)行過(guò)程

發(fā)布時(shí)間:2021-03-02 10:33:26 來(lái)源:億速云 閱讀:150 作者:清風(fēng) 欄目:編程語(yǔ)言

這篇“Laravel請(qǐng)求到響應(yīng)的整個(gè)執(zhí)行過(guò)程”除了程序員外大部分人都不太理解,今天小編為了讓大家更加理解“Laravel請(qǐng)求到響應(yīng)的整個(gè)執(zhí)行過(guò)程”,給大家總結(jié)了以下內(nèi)容,具有一定借鑒價(jià)值,內(nèi)容詳細(xì)步驟清晰,細(xì)節(jié)處理妥當(dāng),希望大家通過(guò)這篇文章有所收獲,下面讓我們一起來(lái)看看具體內(nèi)容吧。

Laravel 是什么

Laravel 是一套簡(jiǎn)潔、優(yōu)雅的PHP Web開(kāi)發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來(lái);它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡(jiǎn)潔、富于表達(dá)力。

Laravel請(qǐng)求到響應(yīng)的整個(gè)執(zhí)行過(guò)程,主要可以歸納為四個(gè)階段,即程序啟動(dòng)準(zhǔn)備階段、請(qǐng)求實(shí)例化階段、請(qǐng)求處理階段、響應(yīng)發(fā)送和程序終止階段。

程序啟動(dòng)準(zhǔn)備階段

服務(wù)容器實(shí)例化

服務(wù)容器的實(shí)例化和基本注冊(cè),包括了服務(wù)容器本身注冊(cè)、基礎(chǔ)服務(wù)提供者注冊(cè)、核心類(lèi)別名注冊(cè)和應(yīng)用的基本路徑注冊(cè)。注冊(cè)的服務(wù)只是具體的類(lèi)名,是通過(guò)反射機(jī)制來(lái)實(shí)例化對(duì)象,并且通過(guò)反射機(jī)制自動(dòng)解決構(gòu)造函數(shù)中的依賴(lài)關(guān)系。

核心類(lèi)實(shí)例化

核心類(lèi)實(shí)例化是服務(wù)容器實(shí)例化后,通過(guò)核心類(lèi)別名注冊(cè)服務(wù)來(lái)得到的服務(wù)容器自動(dòng)實(shí)例化對(duì)象。如:index.php中的Kernel類(lèi)實(shí)例化:

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

請(qǐng)求實(shí)例化階段

請(qǐng)求是客戶端發(fā)送的一個(gè)請(qǐng)求報(bào)文,包括請(qǐng)求行、請(qǐng)求首部和請(qǐng)求實(shí)體。Laravel將其分類(lèi)并保存在Illuminate\Http\Request類(lèi)的實(shí)例對(duì)象中,也就是說(shuō)將請(qǐng)求轉(zhuǎn)化為一個(gè)實(shí)例對(duì)象。請(qǐng)求實(shí)例的創(chuàng)建是通過(guò)Illuminate\Http\Request類(lèi)的capture()靜態(tài)方法完成的,即:

$request = Illuminate\Http\Request::capture();

但在capture()方法中,可以看出Laravel的請(qǐng)求實(shí)例是在Symfony請(qǐng)求實(shí)例的基礎(chǔ)上創(chuàng)建的。而Symfony是通過(guò)PHP的全局?jǐn)?shù)組$_GET、$_POST、$_COOKIE、$_FILE和$_SERVER作為參數(shù)來(lái)實(shí)例化請(qǐng)求的。

請(qǐng)求處理階段

請(qǐng)求處理階段首先是準(zhǔn)備請(qǐng)求處理的環(huán)境,包括環(huán)境加載、服務(wù)提供者注冊(cè)等環(huán)節(jié),然后將請(qǐng)求實(shí)例通過(guò)中間件處理及通過(guò)路由和控制器的分發(fā)控制,使得不同的請(qǐng)求通過(guò)相應(yīng)的處理程序進(jìn)行處理并生成響應(yīng)的過(guò)程。

響應(yīng)發(fā)送和程序終止階段

響應(yīng)發(fā)送

Laravel的響應(yīng)處理類(lèi)是Illuminate\Http\Response類(lèi),該類(lèi)的底層也是在Symfony的Response類(lèi)。響應(yīng)的發(fā)送包括兩部分內(nèi)容:響應(yīng)頭信息的發(fā)送和響應(yīng)主體內(nèi)容的發(fā)送。

程序終止

Laravel中,終止程序主要是完成終止中間件的調(diào)用。

感謝你的閱讀,希望你對(duì)“Laravel請(qǐng)求到響應(yīng)的整個(gè)執(zhí)行過(guò)程”這一關(guān)鍵問(wèn)題有了一定的理解,具體使用情況還需要大家自己動(dòng)手實(shí)驗(yàn)使用過(guò)才能領(lǐng)會(huì),快去試試吧,如果想閱讀更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI