Yii 使用了 Web 開發中廣泛採用的模型-視圖-控制器(MVC)設計模式。 MVC的目標是將商務邏輯從使用者介面的考慮中分離,這樣開發人員就可以更容易地改變每一部分而不會影響其他。 在 MVC中,模型代表資訊(資料)和商務規則;視圖包含了使用者介面元素,例如文本,表單等; 控制器則管理模型和視圖中的通訊。
除了 MVC, Yii 還引入了一個前端控制器,叫做 應用,它表示請求處理的執行內容。 應用處理使用者的請求並將其指派到一個合適的控制器以繼續處理。
下面的展示了 Yii 應用的靜態結構:
Static structure of Yii application
1. 一個典型的工作流程
展示了一個 Yii 應用在處理使用者請求時典型的工作流程。
A typical workflow of Yii application
- 使用者發出了存取 URL
http://www.example.com/index.php?r=post/show&id=1 的請求,
Web 服務器通過執行入口指令碼 index.php 處理此請求。
- 入口指令碼建立了一個 應用 執行個體並執行。
- 應用從一個叫做
request 的 應用組件 中獲得了使用者請求的詳細資料。
- 應用在一個名叫
urlManager 的應用組件的協助下,決定請求的 控制器 和 動作 。在這個例子中,控制器是post,它代表 PostController 類;
動作是 show ,其實際含義由控制器決定。
- 應用建立了一個所請求控制器的執行個體以進一步處理使用者請求。控制器決定了動作
show 指向控制器類中的一個名為 actionShow 的方法。然後它建立並持行了與動作關聯的過濾器(例如存取控制,基準測試)。
如果過濾器允許,動作將被執行。
- 動作從資料庫中讀取一個 ID 為
1 的 Post 模型。
- 動作通過
Post 模型渲染一個名為 show 的 視圖。
- 視圖讀取並顯示
Post 模型的屬性。
- 視圖執行一些 小物件。
- 視圖的渲染結果被插入一個 布局。
- 動作完成視圖渲染並將其呈現給使用者。