【发布时间】:2010-11-30 15:09:02
【问题描述】:
我正在努力学习并充分理解 mvc 模式并同时学习 php。我决定构建基本的 mvc 框架,以便以后在各种项目中使用。在这里阅读了很多关于 mvc 和模型/视图/控制器之间耦合的帖子后,我有点迷失了。目前我的理解是,在 Web 应用程序控制器中,控制器处理来自浏览器的请求,并在必要时调用方法模型类告诉模型改变其状态。然后控制器实例化适当的视图类,该类将负责显示界面。 这是我不明白的一点......
现在控制器应该将适当的模型对象传递给视图,视图应该在需要时从模型中提取所有数据吗?
或者控制器应该从模型中获取数据并将其传递给视图,可能将其全部包装到视图将访问并从那里获取数据的单个包装器对象中?
或者视图应该在需要时简单地实例化适当的模型并直接从模型对象中提取数据?
从我这里读到的
http://www.phpwact.org/pattern/model_view_controller
我倾向于第三个选项,其中控制器不向视图传递任何内容,视图实例化它需要的模型。这是因为:
视图和控制器应该对模型具有相同的访问权限
控制器不应仅仅充当视图和模型之间的中介。
真的有一种正确的方法可以做到这一点,还是取决于项目?另外,您会向对 OOP 有深入了解但对 php 相对较新且对 mvc 架构不太清楚的人推荐什么方法。或者,也许我应该选择我认为正确的任何事情,并从我的错误中吸取教训(虽然我想避免这个;)?
现在,如果我的问题不清楚,请告诉我,届时将尝试更好地解释。我还阅读了很多关于 stackoverflow 的帖子和不同网站上的大量文章,但仍然希望得到帮助,因此提前感谢所有答案.
【问题讨论】: