Laravel 請求週期
加載 composer 自動加載器
require __DIR__.'/../bootstrap/autoload.php';
// 此 $app 對象貫穿全文
$app = require_once __DIR__.'/../bootstrap/app.php';
主要過程:
1. 設置基礎路徑
2. 基礎綁定
3. 註冊全局基礎服務
4. 核心容器別名設置
5. 註冊三個單例
// 此 $kernel 對象爲 Laravel 應用的樞紐,將會協調各部分之間的工做,完成請求
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
主要過程:
1. 注入應用對象
2. 注入事件對象
3. 注入路由集合對象
4. 注入路由對象
5. 將各中間件注入到路由對象
獲取 Request 對象
$request = Illuminate\Http\Request::capture()
主要過程:
1. 委託\Symfony\Component\HttpFoundation\Request組件,並注入全局變量(封裝成相應的對象),建立基礎請求對象
2. 經過基礎請求對象建立 $request
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
主要過程:
1. 注入請求對象($request)
2. 根據配置項設置應用的運行環境(包括加載設置系統環境變量、加載配置文件、設置系統錯誤異常、設置 Facade、註冊配置項的服務提供者、啓動服務提供者的引導項)並觸發相應的事件
3. 處理全局中間件
4. 路由解析(請求分發、路由查找、路由匹配、路由分離器設置、事件分發、路由執行)
5. 經過路由解析返回的 content 建立 $response 對象
6. 設置 $response 對象的響應頭
發送響應
$response->send();
執行後續操做
$kernel->terminate($request, $response);
主要過程:
1. 獲取中間件,並嘗試觸發每一箇中間件的 terminate 方法
2. 觸發 terminate 的事件