2013-07-06 22 views
4

我正在學習MVC模式,特別是使用PHP,並閱讀了一些很棒的教程。我已經設法得到了一個可行的基本結構。爲了好玩,我開始試驗控制器,模型和視圖如何交互,並最終獲得一個根據請求的頁面創建模型/視圖的控制器類。所以我只是在主index.php中實例化這個控制器並將它傳遞給url值。例如,「mysite/blog/recent」將讓控制器包含(並實例化)包含模型和視圖文件夾中相應視圖的「models/blog/recent.php」文件。我的問題是,爲網站的每個部分設置實際的控制器類,而不是將模型分離到不同的文件夾(即「博客」)並將它們加載到一個控制器類中是否有優勢?只有一個控制器類的MVC模式?

+0

模型是一個圖層,而不是一個類或對象。和視圖不是簡單的模板。我不知道你使用了哪些教程,但聽起來像他們已經充滿了廢話。 –

回答

2

有一定的關注點,就是關於MVC的決定變得不那麼簡單和乾燥。對於一個非常小的(也是簡單的)站點,您可能只需要一個控制器來完成您的所有工作,從模型中提取數據並構建視圖。您當然可以構建您的MVC體系結構,以便所有模型和視圖都由單個控制器實例化,但當然,一旦您訪問了一個遠程複雜的站點,它就會迅速崩潰。

我的建議是讓您的控制器在概念上與您以模塊化方式設計應用程序的方式分開。我將擁有一個帶有我的所有博客方法和頁面服務的BlogController,一個ContactController,一個PortfolioController,它們都從一個主頁面控制器繼承,以確保當我的網站的這些不同部分的複雜性擴大時,我可以維護它們而不必一個大酒桶'SoupController。

+0

這是一個很好的一般答案。另請參閱我自己的。 –

1

只要你使用MVC風格並養成爲可以組織爲對象的東西製作類的習慣(tire.wheel.spoke),那麼你會沒事的。

從小開始 - 羅馬不是一天建成的。你將擁有你的第一個控制器,然後當你添加更多的功能時,你會添加另一個。我一直喜歡編寫一個從一開始就調用控制器的API的想法,因爲許多現代網站最終都必須這樣做,並且從一開始就這樣做會迫使您組織控制器並簡化命令結構。

祝你好運!

+1

謝謝!我很感謝快速和有益的答覆。 – shaqb4

+0

我的榮幸。如果我的回答「解決」了您的問題,請將其標記爲這樣! –

相關問題