當談起 Laravel 不免俗的一定要先說他的請求生命週期,那就讓我們來仔細探究吧。
使用者透過瀏覽器發送 URL (Domain Name) 請求,該 URL 首先經由 DNS 解析為對應的 IP 位址,並透過指定的 port 將請求送至 Server(如 Nginx 或 Apache)。
Server 依據請求的檔案類型與路徑,判斷是否為 PHP 請求,若是,便將其轉交給 PHP-FPM 處理。
PHP-FPM 執行對應的 PHP 程式碼,此時請求才正式進入 Laravel 應用程式。
在 Laravel 中,public/index.php 文件是所有請求的入口點。
當用戶的請求透過 Server 傳送到你的 Laravel 應用程式時,
Server 會將請求路由到 public/index.php 文件。
這個文件包含了一些必要的初始化代碼,例如加載 Composer
的自動加載器和 Laravel 應用程式本身的引導程序。
當 Server 將請求路由到 public/index.php 文件時,這個文件會執行一些初始設置,並加載 Laravel 框架所需的設定、函式庫和其他相關文件並開始了整個應用程式的加載過程。
這段程式碼總共做了兩件事情,分別是設定主要目錄以及綁定實作的類別
app/Http/Kernel.php 是 Laravel 的「HTTP 核心進入點」,它的主要職責 註冊全域與路由專用的 Middleware:
Laravel 的中文文件說明:「服務提供者(Provider)是所有 Laravel 應用程式啟動的中心所在。你自己的應用程式,以及所有的 Laravel 核心服務,都是透過服務提供者啟動的。」
功能說明
註冊服務/套件:
註冊 Laravel 核心功能、第三方套件(像是 Passport、Sanctum、Debugbar 等)
綁定服務容器(Service Container):
利用 bind() / singleton() 將類別、介面注入容器,支援依賴注入
事件監聽、Route、Middleware 等註冊:
可以在 boot() 方法中註冊 route、view composer、事件監聽器等
初始化應用邏輯:
在 boot() 中執行自定初始化行為,例如共享變數、註冊自定驗證規則
條件式註冊功能:
根據環境條件來註冊不同功能,例如 dev-only 工具(debugbar)只在 local 開啟
Route 可以根據請求的 HTTP 方法與 URL 路徑,對應到特定的 Controller、Middleware 或 Route Group,進而處理該請求。
Middleware 是 Laravel 中處理請求前的中介層,可以進行如登入驗證、權限檢查、語系設定等初步過濾,決定是否讓請求繼續執行。
當請求進入 Controller 後,通常會呼叫 Service 層的方法來處理商業邏輯,接著將處理結果整理成回應並回傳給用戶端,完成整個請求的生命週期。