所有的網頁呼叫都是透過請求(Request)和回應(Response)來進行,以下是Laravel內進行的過程
首先客戶端發出的Request會透過(Apache/Nginx)的設定檔,導向public/index.php中
而index.php載入composer來產生autoloader的定義,接著從boostrap/app.php檢索Laravel應用程式的實例
而這一步就是透過Laravel本身建立應用程式(container)的實例。
接下來會進入HTTP Kernel或Console Kernel,這取決於進入應用程式request本身的型態,所有的Request都會透過這兩者任一的核心服務。
HTTP Kernel 定義了一個 HTTP Middleware (中介層) 清單。Request 必須要通過這些 Middleware,然後才會給應用程式處理。
這些Middleware包含處理HTTP Session的讀寫,判斷應用程式是否在維護模式下,認證csrf_token等等。
Service Provider 負責啟動框架中所有的元件,所有的 Service Provider 都在 config/app.php 設定檔中的 providers 陣列內設定。
Laravel 會迭代這個 Service Provider 列表,然後將逐一初始化這些 Provider。
初始化好 Provider 後,就會呼叫所有 Provider 的 register (註冊) 方法。接著,註冊好所有 Provider 後,
就會呼叫每個 Provider 的 boot (啟動) 方法。這樣一來,在執行 boot 方法時,
Service Provider 就能相依所有註冊好的 Container Binding (容器繫結)。
Laravel 所提供的所有主要功能都是使用 Service Provider 來啟動並設定的。
由於 Service Provider 需要啟動並設定框架中許多的功能,因此 Service Provider 是整個 Laravel 啟動過程中最重要的一個部分。
以下是接下來request的流程
到了最後HTTP Kernel 的 handle 方法就會回傳 Response 物件,然後 index.php 檔案則會呼叫這個 Response 物件上的 send 方法,而send 方法會將 Response 的內容送到使用者的網頁瀏覽器上。到這裡,我們走完整個 Laravel Request 生命週期的旅程了!
Facade是一個共用的介面,可以讓你使用service container內的東西(許多Laravel的特點),可以研究其內的東西來精進Laravel的理解。
資源引用:https://docs.cornch.dev/zh-tw/laravel/9.x/lifecycle
https://laravel.com/docs/9.x/lifecycle