Laravel的请求声明周期
聲明周期概述#
開(kāi)始#
public/index.php 文件是所有對(duì)Laravel應(yīng)用程序的請(qǐng)求的入口點(diǎn)。而所有的請(qǐng)求都是經(jīng)由你的Web服務(wù)器(Apache/Nginx)
通過(guò)配置引導(dǎo)到這個(gè)文件。index.php 文件不包含太多的代碼,卻是加載框架的起點(diǎn)。
index.php 問(wèn)價(jià)加載Composer生成定義的自動(dòng)加載器,然互從bootstrap/app.php腳本中檢索Laravel應(yīng)用程序的實(shí)例。
Laravel本身采取的第一個(gè)動(dòng)作是創(chuàng)建一個(gè)application/service container的實(shí)例。
HTTP / 控制器內(nèi)核#
接下來(lái),根據(jù)進(jìn)入應(yīng)用的程序大的請(qǐng)求類(lèi)型來(lái)將傳入的請(qǐng)求發(fā)送到HTTP內(nèi)核或控制臺(tái)內(nèi)核。而這兩個(gè)內(nèi)核是用來(lái)作為所有
請(qǐng)求都要通過(guò)的中心位置。現(xiàn)在,我們先看看位于 app/Http/Kernel.php中的HTTP內(nèi)核。
HTTP內(nèi)核繼承了 Illuminate\Foundation\Http\Kernerl類(lèi),他定義了在執(zhí)行請(qǐng)求之前運(yùn)行的bootstrappers數(shù)組。這個(gè)數(shù)組
負(fù)責(zé)在實(shí)際處理請(qǐng)求之前完成這些內(nèi)容:配置錯(cuò)誤處理、配置日志記錄、檢測(cè)應(yīng)用程序環(huán)境以及執(zhí)行其他需要完成的任務(wù)。
HTTP內(nèi)核還定義了所有請(qǐng)求被應(yīng)用程序處理之前必須經(jīng)過(guò)的HTTP中間件的列表。這些中間件處理HTTP會(huì)話(huà)的讀寫(xiě)。
確定應(yīng)用程序是否處于維護(hù)模式、驗(yàn)證CSRF令牌等。
HTTP內(nèi)核的handle方法的方法簽名非常簡(jiǎn)單:接收Request 并返回 Response。可以把內(nèi)核當(dāng)做是代表整個(gè)應(yīng)用
程序的大黑盒,給他HTTP請(qǐng)求,他就返回HTTP相應(yīng)。
服務(wù)提供器#
最重要的內(nèi)核引導(dǎo)操作之一是加載應(yīng)用程序的服務(wù)提供器。引用程序的所有服務(wù)提供器都在config/app.php配置文件的
providers 數(shù)組中配置。首先,所有提供器都會(huì)調(diào)用register方法,接著,由 boot方法負(fù)責(zé)調(diào)用所有被注冊(cè)提供器。
服務(wù)器負(fù)責(zé)引導(dǎo)所有框架的各種組件,如數(shù)據(jù)庫(kù)、隊(duì)列、驗(yàn)證和路由文件。也就是說(shuō),框架提供的每個(gè)功能
都由他們來(lái)引導(dǎo)并配置。因此也可以說(shuō),服務(wù)提供器是整個(gè)Laravel引導(dǎo)過(guò)程中最重要的方面。
分配請(qǐng)求#
一旦引導(dǎo)了引用程序且注冊(cè)所有服務(wù)器提供器,Request請(qǐng)求就會(huì)被轉(zhuǎn)交給路由器來(lái)進(jìn)行調(diào)度。路由器將請(qǐng)求發(fā)送到路由
或控制器或任何運(yùn)行與路由的特定中間件。
聚焦服務(wù)提供器#
服務(wù)提供器引導(dǎo)Laravel應(yīng)用程序真正的關(guān)鍵。創(chuàng)建應(yīng)用程序?qū)嵗⒆?cè)服務(wù)提供器,并請(qǐng)求交給被引導(dǎo)的
應(yīng)用程序。
?
轉(zhuǎn)載于:https://www.cnblogs.com/simadongyang/p/8470091.html
總結(jié)
以上是生活随笔為你收集整理的Laravel的请求声明周期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于tensorflow的变量(vari
- 下一篇: nodejs中的exports和modu