iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
自我挑戰組

學框架永不嫌晚,從現在開始學Laravel你也可以系列 第 11

Day 11 Laravel基礎功 - Request的生命週期

  • 分享至 

  • xImage
  •  

所有的網頁呼叫都是透過請求(Request)和回應(Response)來進行,以下是Laravel內進行的過程

首先客戶端發出的Request會透過(Apache/Nginx)的設定檔,導向public/index.php中
而index.php載入composer來產生autoloader的定義,接著從boostrap/app.php檢索Laravel應用程式的實例
而這一步就是透過Laravel本身建立應用程式(container)的實例。

https://ithelp.ithome.com.tw/upload/images/20220921/201494684LDmszMMdL.png

接下來會進入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 (容器繫結)。

https://ithelp.ithome.com.tw/upload/images/20220921/20149468EW4HDlkZ4N.png

Laravel 所提供的所有主要功能都是使用 Service Provider 來啟動並設定的。
由於 Service Provider 需要啟動並設定框架中許多的功能,因此 Service Provider 是整個 Laravel 啟動過程中最重要的一個部分。

以下是接下來request的流程

https://ithelp.ithome.com.tw/upload/images/20220921/20149468iHskjB2ibV.png

到了最後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


上一篇
Day 10 Laravel基礎功 - Data Query 3
下一篇
Day 12 Laravel基礎功 - 資料表的關聯
系列文
學框架永不嫌晚,從現在開始學Laravel你也可以14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言