cli*_*i__ 15 php model-view-controller
早些时候,许多开发人员认为视图不应该像大多数框架那样直接与模型通信.
然后,这个意见似乎是错误的,我找到了一些文章,这些文章说视图可以直接与模型沟通.
http://r.je/views-are-not-templates.html
http://www.tonymarston.net/php-mysql/model-view-controller.html
模型,视图,控制器混淆
以及
模型应该如何在MVC中构建?
大多数这些文章引用了维基百科,模型 - 视图 - 控制器的块,引号是:
视图查询模型以生成适当的用户界面(例如视图列出购物车的内容).视图从模型中获取自己的数据.在一些实现中,控制器可以向视图发出一般指令以呈现其自身.在其他情况下,视图会自动通知需要屏幕更新的状态(Observer)更改模型.
啊,这是来自维基百科,这样一个权威的网站,一定是对的!
但现在,当我打开MVC http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller的wiki链接时,该页面已于今年9月14日(今年)进行了编辑2013),上面的句子已经消失了.
视图的新定义是:
视图通过控制器从模型请求向用户生成输出表示所需的信息.
现在我又困惑了,新的定义说视图应该通过控制器从模型中请求数据......
视图应该直接在地球上访问模型吗?
ter*_*ško 21
以下是经典MVC架构中的依赖关系的表示.您会注意到没有箭头从控制器指向视图,因为它是新增的:

Source: GUI architectures
然后有一个依赖关系图更接近你将在"MVC框架"中看到的内容:

Source: Passive view
"被动视图"配置不是 MVC架构的一部分.虽然它使用相同的名称,但实际上它是MVP模式的变体(您可以在本出版物中找到更长更详细的描述)
结论:是的,如果您正在实现MVC或类似MVC的架构,那么您的视图应该是从模型层请求信息.
此外,您应该注意到这不是所谓的"mvc框架"所推动的.在类似Rails的框架中,没有视图.相反(因为原始结构是为原型制作的),视图被替换为哑模板,视图的所有职责被推入他们称之为"控制器"的东西.
基本上,恕我直言,命名类似Rails模式的最佳方式是OLT:ORM-Logic-Template.
dec*_*eze 13
"模型"是您的核心应用程序.您的应用程序可以执行的所有操作都在模型中.
"视图"用于可视化正在发生的事情并提供用户界面.
"控制器"是对事件做出反应并指示模型并查看要做什么所需的粘合剂.
现在,您对模型和视图之间的通信有哪些选择?
第二个显然更加独立.如果您需要将数据推送到视图中,则意味着视图外的某个人需要知道视图所需的内容.尤其是视图可以非常动态并且经常变化.有人决定在右上角再显示一个小部件,突然之间视图需要更多数据.这意味着需要重新编码其他部分以将更多数据推送到视图中.因此,您需要更改至少两个独立的部分,因为视图已被更改.
更好的选择是为视图提供一个句柄,使其能够与模型通信并获取它自己需要的所有数据.控制器只是告诉视图"我们现在需要XYZ形式,这里是一个与模型对话的句柄,去吧!" 并且视图可以完成其工作.