理解框架啟動流程有助於更有效地開發、除錯與擴展。本文從請求進入到回應輸出,梳理 Laravel 的核心啟動機制。
public/index.php(Apache 透過 .htaccess 重寫)。bootstrap/start.php,建立 Application 物件(同時是 IoC 容器)、設定路徑、環境檢測。vendor/laravel/framework/src/Illuminate/Foundation/start.php,載入時區、錯誤報告等設定,註冊所有服務提供者。app/start/ 下檔案(global.php、local.php、環境專屬檔)。app/routes.php。Request 物件送入 Application,路由匹配、執行控制器、生成 Response。Response 送回客戶端。app/config/app.php 的 providers 陣列列出所有服務提供者。每個提供者包含 register() 方法,向 IoC 容器綁定服務(閉包)、註冊事件監聽、視圖合成器、Artisan 命令等。
服務提供者是 Laravel 可擴展性的關鍵:核心組件(Routing、Queue、Cache、Auth...)皆透過提供者註冊。
app/start/global.php:所有環境載入,預設含日誌註冊、app/filters.php 載入。app/start/local.php:僅 local 環境載入。app/start/{environment}.php:自定環境對應檔案。啟動檔放置「引導性質」代碼:視圖合成器、日誌設定、PHP 設定等。大型應用建議遷移至服務提供者避免檔案膨脹。
// 請求處理前
App::before(function ($request) { ... });
// 請求處理後、回應送出前
App::after(function ($request, $response) { ... });
// 回應送達客戶端後
App::finish(function ($request, $response) { ... });
// 腳本結束前最後機會
App::shutdown(function () { ... });
可用於全域過濾器、統一回應修改、收尾清理工作。通常在啟動檔或服務提供者中註冊。
Laravel 的請求生命週期以 Application 容器為核心,透過服務提供者完成組件註冊,啟動檔處理環境差異,最後由路由分發執行業務邏輯。掌握此流程有助於理解框架行為、編寫擴展包、排查疑難雜症。