2015-05-13 37 views
1

據我所知,「MVC」出現在網絡之前,並且經常用於桌面軟件。控制器和沒有「操作」的頁面? MVC

如果我理解正確,控制器運行時,用戶將點擊一個按鈕,這將觸發一個動作。

但是,如果我們談論網頁,情況有點不同,假設用戶點擊一個鏈接,然後觸發一個動作。

但隨後,來到我的懷疑,是控制器頁面的一部分?

我的意思是,網頁通常不是由網站中的用戶行爲進行僅僅是,但注意到,許多PHP框架使用控制器,是正確的?

另一個疑問是我「家」我有幾個項目,例如:

  • 橫幅
  • 精選文章
  • 最近的職位

每個項目會有不同的模型,我可以打電話多個模型查看控制器

這些是正確的步驟嗎?或者大多數PHP框架並不嚴格?

回答

1

你是完全正確的,我理解混亂。

在純MVC方法中,控制器僅監聽用戶操作並相應更新模型。模型然後通過視圖(通過觀察者設計模式)和視圖更新本身,從模型訪問它需要的數據。 這就是在Web,桌面應用程序中,Model和View同時運行以及Model可以通知View的位置之前完成的方式。控制器不設置視圖。

在這個純粹的MVC模型中,您提到的關於主頁的示例確實不需要Controller。視圖只會呈現自己,通過模型訪問它需要的數據。控制器非常薄,只能聽取用戶操作並更新模型。這就是他們所做的一切。

在網絡,這種模式是不可能的,因此有其他的方法。模型無法像在純模型中那樣通知視圖,因此流行框架要求您執行的操作是在控制器中設置視圖。這就是爲什麼你的例子首頁需要一個控制器,因爲你將在那裏設置你的視圖與它需要的所有數據。

但是,還有另外一種我個人寫過的方法,其中控制器沒有設置允許您保留微小控制器的視圖。你可以在這裏閱讀:A better OOP approach to building MVC applications

因此,我認爲主頁根本不需要控制器操作。視圖應該只是呈現自己並訪問它需要呈現的數據。正如你所說,控制器的作用是處理用戶操作並相應地更新模型。如果它不止於此,可能會違反SRP。控制器不應該設置視圖,而應該設置爲the View should get its own data from the Model

相關問題