4

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

4

2 回答 2

3

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

我的建议是让你的控制器在概念上分离,就像你可能以模块化方式设计应用程序一样。我将拥有一个带有我所有博客方法和页面服务的 BlogController、一个 ContactController、一个 PortfolioController,它们都从一个主 PageController 继承,以确保当我的站点的这些不同部分的复杂性扩展时,我可以维护它们而无需一个大的“汤控制器”。

于 2013-07-06T23:57:04.800 回答
1

只要您使用 MVC 样式并养成为可以组织为对象(tire.wheel.spoke)的事物创建类的习惯,那么您就可以了。

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

祝你好运!

于 2013-07-07T00:41:04.220 回答