首先,實體化 Slim\App
類別。這是 Slim 應用程式物件。在實體化時,Slim 會為每個應用程式依賴註冊預設服務。
接著,使用應用程式實例的 get()
、post()
、put()
、delete()
、patch()
、head()
及 options()
路由方法定義路由。這些實例方法會向應用程式的 Router 物件註冊路由。每個路由方法都會傳回 Route 實例,因此您可以立即呼叫 Route 實例的方法來新增中介軟體或指定名稱。
第三,呼叫應用程式實例的 run()
方法。此方法會啟動下列程序:
run()
方法會開始向內遍歷應用程式的中介軟體堆疊。這是一個同心結構的中介軟體層,在執行 (以及之後) Slim 應用程式之前 (以及之後) 會接收 (並選擇性地處理) Environment、Request 和 Response 物件。Slim 應用程式是同心結構中最內層的層。每個中介軟體層會從最外層開始向內呼叫。
run()
方法到達最內層的中介軟體層後,它會呼叫應用程式實例,然後將目前的 HTTP 要求分派到適當的應用程式路徑物件。如果路徑與 HTTP 方法和 URI 相符,則會呼叫路徑的中介軟體和可呼叫項。如果找不到相符的路徑,則會呼叫找不到或不允許的處理常式。
應用程式的分派程序完成後,每個中介軟體層會重新取得控制權,從最內層的層開始。
最外層的中介軟體層讓出控制權後,應用程式實例會準備、序列化和傳回 HTTP 回應。會使用 PHP 的原生 header()
方法設定 HTTP 回應標頭,而 HTTP 回應本文會輸出至目前輸出的緩衝區。