1.第一件事
laravel中的所有請(qǐng)求入口都是public/index.php文件,index.php會(huì)載入composer生成的自動(dòng)加載設(shè)置,從bootstrap/app.php腳本獲取laravel應(yīng)用實(shí)例,之后laravel的第一個(gè)動(dòng)作就是創(chuàng)建服務(wù)容器實(shí)例
2.HTTP/Console內(nèi)核
請(qǐng)求->app/Http/kernel.php中,該類定義了bootstrappers數(shù)組(數(shù)組中的類在請(qǐng)求被執(zhí)行之前要先運(yùn)行),該數(shù)組中是一些關(guān)于
錯(cuò)誤處理、日志、監(jiān)測(cè)應(yīng)用環(huán)境以及其他在請(qǐng)求被處理前需要被執(zhí)行的任務(wù)類
HTTP內(nèi)核定義了在請(qǐng)求被處理前還需要經(jīng)過:HTTP中間件,這些中間件處理HTTP會(huì)話的讀寫、判斷應(yīng)用是否處于維護(hù)模式、驗(yàn)證CSRF令牌等等
HTTP內(nèi)核的標(biāo)志方法:handle。獲取Request,處理數(shù)據(jù),返回Response.
2.2.1 服務(wù)器提供者
內(nèi)核啟動(dòng)最重要的動(dòng)作之一:為應(yīng)用載入服務(wù)提供者。
1.所有的服務(wù)提供者都被配置在config/app.php類的providers數(shù)組中。
2.所有提供者的register方法被調(diào)用-->完成注冊(cè)-->boot()調(diào)用
3.服務(wù)提供者負(fù)責(zé)啟動(dòng)框架的所有各種的組件,如:數(shù)據(jù)庫(kù)、隊(duì)列、驗(yàn)證器、路由組件等
2.2.2 分發(fā)請(qǐng)求
應(yīng)用被啟動(dòng),服務(wù)提供者被注冊(cè),Request--->交給路由器--->分發(fā)到路由或控制器,同事運(yùn)行所有路由指定的中間件
3.聚焦服務(wù)提供者
應(yīng)用實(shí)例被創(chuàng)建--->服務(wù)提供者被注冊(cè)--->請(qǐng)求交給啟動(dòng)后的應(yīng)用進(jìn)行處理
應(yīng)用默認(rèn)的服務(wù)提供者存放在app/Providers目錄下
AppServiceProvider是空的(默認(rèn)下),這里是添加自定義啟動(dòng)和服務(wù)容器綁定的最佳位置