我正在學習MVC模式,特別是使用PHP,並閱讀了一些很棒的教程。我已經設法得到了一個可行的基本結構。爲了好玩,我開始試驗控制器,模型和視圖如何交互,並最終獲得一個根據請求的頁面創建模型/視圖的控制器類。所以我只是在主index.php中實例化這個控制器並將它傳遞給url值。例如,「mysite/blog/recent」將讓控制器包含(並實例化)包含模型和視圖文件夾中相應視圖的「models/blog/recent.php」文件。我的問題是,爲網站的每個部分設置實際的控制器類,而不是將模型分離到不同的文件夾(即「博客」)並將它們加載到一個控制器類中是否有優勢?只有一個控制器類的MVC模式?
回答
有一定的關注點,就是關於MVC的決定變得不那麼簡單和乾燥。對於一個非常小的(也是簡單的)站點,您可能只需要一個控制器來完成您的所有工作,從模型中提取數據並構建視圖。您當然可以構建您的MVC體系結構,以便所有模型和視圖都由單個控制器實例化,但當然,一旦您訪問了一個遠程複雜的站點,它就會迅速崩潰。
我的建議是讓您的控制器在概念上與您以模塊化方式設計應用程序的方式分開。我將擁有一個帶有我的所有博客方法和頁面服務的BlogController,一個ContactController,一個PortfolioController,它們都從一個主頁面控制器繼承,以確保當我的網站的這些不同部分的複雜性擴大時,我可以維護它們而不必一個大酒桶'SoupController。
這是一個很好的一般答案。另請參閱我自己的。 –
只要你使用MVC風格並養成爲可以組織爲對象的東西製作類的習慣(tire.wheel.spoke),那麼你會沒事的。
從小開始 - 羅馬不是一天建成的。你將擁有你的第一個控制器,然後當你添加更多的功能時,你會添加另一個。我一直喜歡編寫一個從一開始就調用控制器的API的想法,因爲許多現代網站最終都必須這樣做,並且從一開始就這樣做會迫使您組織控制器並簡化命令結構。
祝你好運!
謝謝!我很感謝快速和有益的答覆。 – shaqb4
我的榮幸。如果我的回答「解決」了您的問題,請將其標記爲這樣! –
- 1. MVC模式:控制器可以對應更多視圖或只有一個
- 2. MVC模式 - 控制器和視圖
- 3. 與前端控制器模式和MVC
- 4. MVC模式,控制器方法和「GetBy ...」
- 5. 只有一個類的生成器模式
- 6. 笨 - 處理形式,只有一個控制器,用於
- 7. MVC設計模式 - 控制器可以有多個視圖,它們有自己的控制器嗎?
- 8. 如何在Spring MVC的控制器設置多個模式的一個方法
- 9. 如何模擬一個MVC控制器的一部分
- 10. 如何在MVC控制器類中調用bootstrap模式
- 11. 在Spring MVC中處理一個控制器的兩個URL模式
- 12. MVC - 控制器類教程
- 13. C#mvc控制器到類
- 14. 應用默認控件模板只有一個控制
- 15. ASP.NET MVC只有一個單選按鈕輸入的是傳遞給控制器
- 16. 傳遞一個視圖模型只有一個對象到控制器
- 17. 從AngularJS的另一個控制器中打開一個模式
- 18. MVC - 在同一類中同時擁有控制器和模型的習慣
- 19. 是否有意義有一個註釋的抽象控制器類 - Spring MVC
- 20. ASP.NET MVC - 一個控制器和多個模型/視圖
- 21. 傳遞一個MVC 3控制器參數的模擬HttpPostedFileBase
- 22. 一個Web API控制器來控制所有模型
- 23. 的UIView和模型 - 視圖 - 控制器(MVC)模式
- 24. mvc模式中模型和控制器的分離
- 25. MVC控制器在另一個控制器?
- 26. Spring MVC,從控制器內部調用另一個控制器
- 27. 是一個類似於mvc控制器的代表嗎?
- 28. 同一類的Spring MVC多個控制器
- 29. 使用彈簧MVC重定向URL模式到一個特定的控制器
- 30. 設計模式與dependecy注入一個基本的控制器 - MVC 3 + Ninject
模型是一個圖層,而不是一個類或對象。和視圖不是簡單的模板。我不知道你使用了哪些教程,但聽起來像他們已經充滿了廢話。 –