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