早些时候,许多开发者认为视图不应该直接与模型通信,就像大多数框架一样.

然后,这个意见似乎是错误的,我找到一些文章,这些文章说这个观点可以直接与模型交流.

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?

这些文章中的大多数引用了维基百科,模型视图控制器的一个块,引号是:

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 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller的维基链接时,该页面将在今年9月14日(2013年)进行修改,上面的句子已经过去了.

视图的新定义是:

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

现在我再次感到困惑,新的定义表示视图应该通过控制器从模型中请求数据…

视图访问模式是否直接在地球上?

以下是经典MVC架构中依赖关系的表示.你会注意到没有箭头指向控制器来查看,因为它是新增的:

资料来源:GUI architectures

然后,依赖关系映射更接近于“MVC框架”中通常会看到的内容:

资料来源:Passive view

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

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

此外,您应该注意,这不是所谓的“mvc框架”正在推动的.在类似Rails的框架中,没有任何意见.相反(由于原始结构是为原型结构而制作的)视图被愚蠢的模板所取代,并且视图的所有职责都被推送到他们称为“控制器”的东西中.

基本上,IMHO,名为Rails的模式的最佳方式是OLT:ORM-Logic-Template.

php – MVC:应该直接看模型吗?的更多相关文章

  1. 《从零开始学Swift》学习笔记Day67――Cocoa Touch设计模式及应用之MVC模式

    现在,很多计算机语言和架构都采用了MVC模式。MVC模式概述MVC模式是一种复合设计模式,由“观察者”模式、“策略”模式和“合成”模式等组成。MVC模式由3个部分组成,如图所示,这3个部分的作用如下所示。CocoaTouch中的MVC模式上面我们讨论的是通用的MVC模式,而Cocoa和CocoaTouch框架中的MVC模式与传统的MVC模式略有不同,前者的模型与视图不能进行任何通信,所有的通信都是通过控制器完成的,如图所示。

  2. jsp 实现的简易mvc模式示例

    这篇文章主要介绍了jsp 实现的简易mvc模式,结合实例形式简单分析了jsp实现的MVC模式模型、视图、控制器相关配置与使用操作技巧,需要的朋友可以参考下

  3. 谈谈关于JavaScript 中的 MVC 模式

    本文介绍了模型-视图-控制器模式在 JavaScript 中的实现,有需要的朋友可以参考一下

  4. PHP中MVC模式的模板引擎开发经验分享

    MVC是模型(Model)、视图(View)和控制(Controller)的缩写,PHP中采用MVC模式的目的是实现Web系统的职能分工,通俗的说就是把业务逻辑处理从用户界面视图中分离出来。

  5. 如何在Windows窗体应用程序中使用C#.NET正确实现MVC

    程序员是否应该忽略它们暴露给模型成员函数的事实?

  6. php – 我在哪里将数据库查询放入MVC?

    最近几天,我在PHP中广泛阅读有关OOP和MVC的书籍和网页,这样我就可以成为更好的程序员.我对MVC的理解遇到了一些问题:我在哪里放一个MysqL_query?关于MVC主题的材料你可能已经列出了你正在阅读的书籍,因为大多数涉及MVC的书籍都是错误的.如果你想成为一个更好的开发者,我建议你从MartingFowler–GUIArchitectures的文章开始.接着是同一本书的作者–“PatternsofEnterpriseApplicationArchitecture”.然后下一步将是你研究SOLID

  7. php – 模型类是否代表一个实体或返回它

    我正在设计一个使用CodeIgniter的Web应用程序(但我认为这个问题一般适用于Web应用程序中的MVC模式).当我为一些数据库实体设计模型类(例如,一个BlogEntry为例)时,我基本上有两个选择:“经典的OOP”方法是让类代表实体,即该类的一个实例是一个BlogEntry.在CodeIgniter中,这将导致代码要访问某些博客条目,我将执行一个$this->load->模型(‘bloge

  8. php – 为什么这么多MVC Web框架有利于将多个控制器动作分组在一个类中?

    我的经验主要限于PHP,但据我所知,Rails和ASP.NETMVC都采取了相同的路径.关键是几乎每一个Web框架,我曾经遇到过实现控制器的动作,如方法,例如创建,编辑,显示等.这些方法驻留在一个类似PostsController的类中,但是它们几乎不共享状态或依赖关系,因为在整个请求中只有一个被调用.这就是为什么我这个方法似乎是不合理的,因为类只能作为某种命名空间.看到具有大块几乎不相关的控制器

  9. php – 松散耦合的MVC的替代品?

    我不是在寻找MVC上的细微变化,我需要看一些完全不同的东西,也许某种类型的插件方法.编辑:谢谢你到目前为止的答案!

  10. php – 一般在mvc …应该控制器传递数据来查看或查看应该直接从模型?

    >或者视图应该在需要时简单地实例化适当的模型,并直接从模型对象中提取数据?还有什么方法可以推荐给具有良好的OOP体验的人,但是对于PHP而言并不是很清楚,而且在mvc架构上并不太清楚.或者也许我应该跟随我的任何正确的东西,并从我的错误中学习?

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部