许多PHP框架声称它们实现了MVC设计模式。但是,在它们的实现中,模型和视图彼此不了解,并且它们之间的每个通信必须通过控制器完成。正如我在维基百科中读到的,这是MVA(模型视图适配器)而不是MVC设计模式方法,因为在MVC中,模型和视图直接通信。
那些框架的说法是错误的还是我错过了什么?
答案 0 :(得分:7)
像CodeIgniter这样的框架是MVA,是的。但是,他们的声明并非错误,因为MVA基本上是一种不同类型的MVC部署。中介控制器受到处理业务逻辑的用户的攻击;他们还会调用模型来获取数据并准备视图。
这并不完全偏离严格的MVC,模型和视图可以相互通信,所以说它“错误”有点苛刻。我想说这是对MVC的另一种看法。
编辑:
请参阅CodeIgniter对它的看法:
https://www.codeigniter.com/user_guide/overview/at_a_glance.html#
模型不是必需的,因为一切都可以在控制器中完成(显然不建议)。请注意,CI(以及大多数其他框架)表示他们在MVC原则上基于。