回答

0

Zend Framework有自己非常好的Quick Start/Tutorial,它特別介紹MVC。從那裏

報價:

那麼究竟什麼是這個MVC模式 大家都在談論,爲什麼 要照顧嗎? MVC遠不止 只是一個三個字母的縮寫(TLA),你可以隨時隨地抽出你想要的 聽起來聰明;它已成爲現代 網絡應用程序設計中標準的 。理由很充分。 大多數網絡應用程序代碼都屬於 以下三類之一: 演示文稿,業務邏輯和數據 訪問。 MVC模式很好地模擬了這種關注的分離。結果 結果是您的演示代碼 可以合併在您的應用程序的一個部分 您的業務 邏輯在另一個和您的數據訪問 代碼在另一個。許多開發者 已經發現這個明確定義的 分隔是必不可少的,以保持 他們的代碼有組織,特別是當多個開發人員在 上工作的 相同的應用程序。

2

有跡象表明,給MVC的概念解釋,#2其他幾個問題:

概念的一個很好的解釋可以上找到Wikipedia

模型 - 視圖 - 控制器(MVC)是 工程中使用的 架構模式。成功使用 圖案的從 用戶接口的考慮隔離的業務邏輯, 造成一個應用程序,它是 易於修改或者視覺外觀 應用或 底層業務規則,而不 影響其他。在MVC中,型號 代表應用程序的信息(數據) ;視圖 對應於用戶界面的元素,例如文本,複選框 項目等等;並且 控制器管理數據的通信 和用於 的業務規則處理來自 模型的數據。

關於Zend框架

+0

幾乎正確。除非你正在研究一個簡單的應用程序,否則Zend_Db_Table不是模型的充分基礎。查看http://codeutopia.net/blog/2008/12/06/food-for-thought-utilizing-models-in-mvc/瞭解更多細節。 – 2009-01-06 17:40:16

-1

在爲幾句話越好:

  • 模型是DB
  • 的觀點是你所看到的(頁)
  • 控制器膠水(邏輯)

您的模型知道如何訪問包含您的數據的表格;你的觀點知道如何顯示內容;和你的控制器粘在一起(我顯示什麼視圖?我應該使用什麼模型?)。

+0

控制器更像是一個「服務孵化器」,而模型實際上包含很多邏輯。這不僅僅是數據庫。訪問數據庫可以成爲模型邏輯的一部分。 – magnetronnie 2014-10-10 11:30:39

5

M - 模型 - 往往是混亂的最大來源。這些是您的應用程序的一部分,它們完成所有'繁重工作' - 它們處理數據庫訪問,執行復雜的特定於應用程序的邏輯,並負責應用程序的大部分工作。與視圖和控制器不同,Zend Framework沒有模型的基類 - 這是因爲他們所做的沒有真正的一致性。一些框架(比如Ruby on Rails)嘗試將某種數據庫包裝器作爲Model的基礎,但是有很多情況(第三方提要/ API,靜態文件,非持久計算,跨多個表的概念.. ),對此,充其量只是一種誤導性的做法。模型是應用程序中仍然被迫編程的部分,框架無法真正爲您節省時間。

V - 視圖 - 是這裏最簡單的組件。他們應該是簡單的PHP/HTML模板。他們被賦予視圖對象,數組,字符串等,然後將它們放入頁面中。這裏不應該有太多(如果有的話)複雜的邏輯 - 循環這些,顯示這個(如果定義),斑馬條紋這個表和什麼。 View Helper有一些魔術(例如魔術般地呈現Zend_Form的助手),但這對理解整個系統並不重要。

C - 控制器 - 從最廣泛的意義上講,控制器負責接收用戶請求,將它們發送到Model對象並準備將模型交給Views。這是將所有東西放在一起的膠水。如果您使用的是Zend MVC,那麼您需要關注2個控制器 - Zend_Controller_FrontZend_Controller_Action

Zend_Controller_Front(如果您使用Zend_Layout::startMVC(),您可以免費獲得)是應用程序的單一入口 - 它處理原始用戶請求並將URL轉換爲要調用的Action。有很多地方可以對此進行「插件」來處理身份驗證和訪問限制等問題,但核心只是前門處的「交通警察」來指導傳入的請求。

Zend_Controller_Action是動作的基類 - 本質上,Action表示應用程序執行的操作(登錄,列出博客條目,啓動ICBM,訂購匹薩...),但不直接負責實際操作。 Action控制器非常無聊 - 它們從表單和URL中抽取值,在Model類上調用幾個方法來實際執行操作並將結果推送到視圖中。如前所述,它們是將模型和視圖放在一起的「粘合劑」。

一個粗略的測試,看看你是否沿着正確的路線分裂東西,是想象你的網站發生重大變化。視覺重新設計將幾乎完全在視圖中處理。移動所有網址會改變您的控制器。從Web應用程序轉換爲GUI應用程序將取代視圖和控制器,但您的模型仍然大部分未更改。如果你重寫你的模型,你有一個全新的應用程序。