生命週期

應用程式生命週期

1. 實體化

首先,實體化 Slim\App 類別。這是 Slim 應用程式物件。在實體化時,Slim 會為每個應用程式依賴註冊預設服務。

2. 路由定義

接著,使用應用程式實例的 get()post()put()delete()patch()head()options() 路由方法定義路由。這些實例方法會向應用程式的 Router 物件註冊路由。每個路由方法都會傳回 Route 實例,因此您可以立即呼叫 Route 實例的方法來新增中介軟體或指定名稱。

3. 應用程式執行器

第三,呼叫應用程式實例的 run() 方法。此方法會啟動下列程序:

A. 進入中介軟體堆疊

run() 方法會開始向內遍歷應用程式的中介軟體堆疊。這是一個同心結構的中介軟體層,在執行 (以及之後) Slim 應用程式之前 (以及之後) 會接收 (並選擇性地處理) Environment、Request 和 Response 物件。Slim 應用程式是同心結構中最內層的層。每個中介軟體層會從最外層開始向內呼叫。

B. 執行應用程式

run() 方法到達最內層的中介軟體層後,它會呼叫應用程式實例,然後將目前的 HTTP 要求分派到適當的應用程式路徑物件。如果路徑與 HTTP 方法和 URI 相符,則會呼叫路徑的中介軟體和可呼叫項。如果找不到相符的路徑,則會呼叫找不到或不允許的處理常式。

C. 離開中介軟體堆疊

應用程式的分派程序完成後,每個中介軟體層會重新取得控制權,從最內層的層開始。

D. 傳送 HTTP 回應

最外層的中介軟體層讓出控制權後,應用程式實例會準備、序列化和傳回 HTTP 回應。會使用 PHP 的原生 header() 方法設定 HTTP 回應標頭,而 HTTP 回應本文會輸出至目前輸出的緩衝區。