一個典型的 CakePHP 請求
我 們已經在 CakePHP 中覆蓋了基本的要素,讓咱們看看對象如何共同協做完成一個基本的請求。 下面是原始請求的例子,讓咱們想象咱們的朋友 Ricardo 剛剛點擊了 CakePHP 應用程序中登陸頁 「Buy A Custom Cake Now!」 連接。 web
流程圖顯示了一個標準的 CakePHP 請求 數據庫
數字: 2. 標準 CakePHP 請求。 瀏覽器
黑色 = 必備的元素, 灰色 = 可選的元素, 藍色 = 回調 服務器
- Ricardo 點擊了指向 http://www.example.com/cakes/buy 的連接,而且它的瀏覽器發送了一個請求給你的 web 服務器。
- 路由解析這個 URL 用於獲取請求中的參數:控制器、動做(action)和請求中影響商業邏輯的所有剩餘參數。
- 使用路由,請求 URL 映射到一個控制器動做(具體的控制器類的一個方法)。在本例中,是 CakesController 的 bug() 方法。此控制器的 beforeFilter 回調方法將在其所有邏輯動做(action)執行以前被調用。
- 控制器可能會使用模型獲取應用程序的數據。在本例中,控制器使用模型從數據庫中匹配 Ricardo 最後的訂單。全部的可用模型回調、行爲和數據源將在此操做中應用。模型不是必須的,但全部的 CakePHP 控制器初始化包含至少一個模型。
- 當模型獲取到數據,就將其返回給控制器,模型回調被應用。
- 控制器可能會使用組件以進一步完善數據或執行其它操做(如 session 處理、權限或者發送電子郵件)。
- 一旦控制器使用模型和組件準備好了數據,這些數據就被利用控制器的 set() 方法傳送給視圖。控制器回調可能會在數據傳送前被調用。視圖邏輯會被執行,其中可能會包括元素(elements)和/或助手。默認狀況下,視圖在一個佈局內被渲染。
- 附加的控制器回調和(例如 afterFilter)可能會被應用。一切都完成以後,渲染完的視圖代碼被傳送到 Ricardo 的瀏覽器。