下文介紹Laravel框架運行原理,希望對大家有幫助。
使用任何框架,如果理解該框架原理,應(yīng)用起來會更加得心應(yīng)手。
一、生命周期
1. 入口文件:
Laravel框架所有請求入口統(tǒng)一進入/public/index.php文件,請求通過Ngxin/Apache指向該文件。
index.php文件是加載其他文件入口,本身代碼不多。index.php文件載入通過Composer生產(chǎn)的自動加載配置,然后從bootstrap/app.php獲取應(yīng)用實例,創(chuàng)建服務(wù)容器。
2.Http/Console內(nèi)核
接上面,請求被發(fā)送到HTTP內(nèi)核或Console內(nèi)核,取決于應(yīng)用請求類型(會在下篇文章說明)。這兩個內(nèi)核為所有請求必須經(jīng)過的中央處理器,
下面介紹App\Http\Kernel的HTTP內(nèi)核:
HTTP內(nèi)核 繼承自Illuminate\Foundation\Http\Kernel類,該類定義了一個bootstrappers數(shù)組,該數(shù)組中的類在請求被執(zhí)行前運行,bootstrappers配置了錯誤處理、日志、檢測應(yīng)用環(huán)境、其他在請求被處理前需要處理的任務(wù)。
HTTP內(nèi)核還定義請求處理前需要經(jīng)過HTTP中間件,該中間件處理HTTP會話的讀寫、判斷應(yīng)用是否處于維護模式,驗證CSRF令牌(防止CSRF攻擊)等。
HTTP內(nèi)核標簽方法handle:獲取一個Request,返回一個Response,輸入HTTP請求,返回HTTP響應(yīng)。
3.服務(wù)提供者
內(nèi)核啟動會為應(yīng)用載入服務(wù)提供者,服務(wù)提供者都被配置在config/app.php配置文件的providers數(shù)組中。服務(wù)提供者被注冊后,boot方法被調(diào)用。
服務(wù)提供者負責啟動框架的所有組件,如數(shù)據(jù)庫、隊列、驗證器、路由組件等。因他們啟動并配置框架提供的所有特性,服務(wù)提供者是整個Laravel啟動過程中最重要部分。
「延遲」提供器:即providers數(shù)組中較多服務(wù)都是提供的實際服務(wù)需要才會加載。
4. 分發(fā)請求
一旦應(yīng)用被啟動且所有服務(wù)提供者被注冊,Request將會被交給路由器進行分發(fā),路由器將會分發(fā)請求到路由或控制器,同時運行所有路由指定的中間件。
二、服務(wù)提供者
服務(wù)提供是啟動Laravel關(guān)鍵部分,應(yīng)用實例被創(chuàng)建,服務(wù)提供被注冊,請求被啟動后的應(yīng)用進行處理。
默認存放在app/Providers目錄下。
《PHP7進階到架構(gòu)-Laravel/Redis/Swoole/高并發(fā)分布式【六星教育】》從TP5/Laravel框架內(nèi)核原理,到PHP性能優(yōu)化,到swoole網(wǎng)絡(luò)通信引擎,微服務(wù)架構(gòu),大型商業(yè)企業(yè)項目實戰(zhàn),從人工智能技術(shù)到高并發(fā)分布式架構(gòu),跟著老師學(xué)習解決高薪就業(yè)和創(chuàng)業(yè)的問題。