from http://www.yiichina.com/guide/basics.mvc
Yii 使用了 Web 開發中廣泛採用的模型-視圖-控制器(MVC)設計模式。 MVC的目標是將業務邏輯從用戶界面的考慮中分離,這樣開發者就可以更容易地改變每一部分而不會影響其他。 在 MVC中,模型代表信息(數據)和業務規則;視圖包含了用戶界面元素,例如文本,表單等; 控制器則管理模型和視圖中的通信。
除了 MVC, Yii 還引入了一個前端控制器,叫做 應用,它表示請求處理的執行上下文。 應用處理用戶的請求並將其分派到一個合適的控制器以繼續處理。
下面的示意圖展示了 Yii 應用的靜態結構:
Static structure of Yii application
一個典型的工作流
下圖展示了一個 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
模型的屬性。 - 視圖執行一些 小物件。
- 視圖的渲染結果被插入一個 佈局。
- 動作完成視圖渲染並將其呈現給用戶。