gpt4 book ai didi

php - MVC : should view talk with model directly?

转载 作者:IT王子 更新时间:2023-10-29 00:20:54 25 4
gpt4 key购买 nike

早些时候,许多开发人员认为 View 不应像大多数框架那样直接与模型通信。

然后,这个观点好像是错误的,我找了一些文章,这些文章说 View 可以直接和模型通信。

http://r.je/views-are-not-templates.html
http://www.tonymarston.net/php-mysql/model-view-controller.html
Model, View, Controller confusion

How should a model be structured in MVC?

大多数这些文章都引用了维基百科的一个 block ,Model–view–controller,引用是:

A view queries the model in order to generate an appropriate user interface (for example the view lists the shopping cart's contents). The view gets its own data from the model. In some implementations, the controller may issue a general instruction to the view to render itself. In others, the view is automatically notified by the model of changes in state (Observer) that require a screen update.

啊,来自维基百科,这么权威的网站,一定没错!

但是现在,当我打开 MVC 的 wiki 链接时 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller , 页面编辑于今年(2013年)9月14日,上面那句话已经没有了。

View 的新定义是:

A view requests from the model through the controller the information that it needs to generate an output representation to the user.

现在我又糊涂了,新的定义说 View 应该通过 Controller 从模型请求数据...

View 访问模型应该直接在地球上吗?

最佳答案

以下是经典 MVC 架构中依赖关系的表示。您会注意到没有从 Controller 指向 View 的箭头,因为它是新添加的:

enter image description here
来源:GUI architectures

然后是更接近您通常在“MVC 框架”中看到的依赖关系图:

Passive View
来源:Passive view

“被动 View ”配置不是 MVC 架构的一部分。虽然它使用相同的名称,但它实际上是 MVP 的变体。模式 (您可以在 this publication 中找到更长更详细的描述)

底线:是的,如果您正在实现 MVC 或类似 MVC 的架构,那么您的 View 应该从模型层请求信息。

此外,您应该注意,这不是所谓的“mvc 框架”所插入的。在类似 Rails 的框架中没有 View 。相反(因为原始结构是为原型(prototype)设计而制作的) View 被哑模板取代, View 的所有职责都被推到他们称之为“ Controller ”的东西中。

基本上,恕我直言,命名类 Rails 模式的最佳方式是 OLT:ORM-Logic-Template。

关于php - MVC : should view talk with model directly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18872991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com