MVC模式只有一个控制器类?

时间:2013-07-06 23:49:03

标签: php model-view-controller

我正在学习MVC模式,特别是使用php,并且已经阅读了一些很棒的教程。我设法起来了一个有效的基本限制。为了好玩,我开始尝试控制器,模型和视图如何交互,最终得到一个控制器类,根据请求的页面创建模型/视图。所以我只是在主index.php中实例化这个控制器并传递url值。例如,“mysite / blog / recent”将使控制器包含(并实例化)包含模型的“models / blog / recent.php”文件以及views文件夹中的相应视图。我的问题是,为网站的每个部分设置实际的控制器类是否有优势,而不是仅仅将模型分成不同的文件夹(即“博客”)并用一个控制器类加载它们?

2 个答案:

答案 0 :(得分:3)

在某些方面,做出有关MVC的决定变得有点不那么简单。对于一个非常小(和简单)的站点,您可能只需要一个控制器来完成您的所有工作,从模型中提取数据并构建视图。你当然可以构建你的MVC架构,以便所有的模型和视图都由一个控制器实例化,但是当你到达一个甚至远程复杂的站点时,这很快就会崩溃。

我的建议是让您的控制器在概念上与您以模块化方式设计应用程序的方式分开。我会有一个BlogController,包含我所有的博客方法和页面服务,一个ContactController,一个PortfolioController,都是从一个主PageController继承的,以确保当我的网站的这些不同部分的复杂性扩展时,我可以保持它们而不必一个很棒的'SoupController。

答案 1 :(得分:1)

只要您使用MVC风格并习惯为可以组织为对象的事物(tire.wheel.spoke)制作课程,那么您就可以了。

从小处开始 - 罗马不是一天建成的。您将拥有第一个控制器,然后可能在添加更多功能时添加另一个控制器。我一直很喜欢编写一个从一开始就调用控制器的API的想法,因为许多现代网站最终都必须这样做,并且从一开始就这样做会迫使你组织控制器并简化命令结构。

祝你好运!