什么是HMVC模式?什么是HMVC模式?(What is the HMVC pattern?)

2019-05-12 17:29发布

阅读Kohana的文档,我发现,在3.0版本的主要区别是,它遵循HMVC模式,而不是作为MVC 2.x版一样。 关于这个页面在Kohana中的文档,并在维基百科上的一个真的没有给我一个明确的想法。

所以,问题:什么是HMVC模式,它是如何从MVC有什么不同?

Answer 1:

萨姆·德弗雷西(的Kohana的开发者之一)写了相当深入的文章关于HMVC ,它是什么,它如何被使用。

链接是死的:新的链接- https://web.archive.org/web/20160214073806/http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/



Answer 2:

我目前在开发自己的PHP 5.3 HMVC框架调用的过程合金 。 因为我投入巨资和销售上HMVC,我以为我可以提供一个不同的观点,或许为什么应该使用HMVC一个更好的解释和它带来的好处。

使用HMVC架构的最大的实际好处是内容结构的“widgetization”。 一个例子可能是评论,评分,Twitter或博客RSS提要显示器,或购物车的内容对于电子商务网站的显示。 它本质上是一条内容,需要在多个页面来显示,甚至可能是在不同的地方,这取决于主HTTP请求的上下文。

传统的MVC框架一般不提供这些类型的内容结构的一个直接的答案,所以人们普遍结束了复制和开关的布局,使用自定义的助手,创建自己的小部件的结构或库文件,或要求在主数据无关拉控制器通过推到视图和局部呈现。 这些都不是特别好的选择,因为呈现的内容或加载一段特定的职责所需的数据结束了泄漏到多个区域,并在使用它的地方得到复制。

HMVC或专门派遣子请求到一个控制器来处理这些职责的能力是显而易见的解决方案。 如果你觉得你在做什么,它究竟适合控制器结构。 您需要加载有关评论的一些数据,并以HTML格式显示出来。 所以,你发送到评论控制器的一些PARAMS的请求,将其与模型交互,选取一个视图,视图显示的内容。 唯一的区别是你想要内嵌显示的评论,博客文章的用户,而不是观看一个完全独立的完整评论页面(虽然与HMVC办法,实际上你可以用相同的控制器服务内部和外部的要求和“杀下方两个鸟一石”,俗话说)。 在这方面,HMVC是真的追求提高代码的模块化,可重用性,并保持关注更好的分离只是一个自然的副产品。 这是HMVC的卖点。

因此,虽然山姆德弗雷西的TechPortal文章与HMVC外扩有趣的是,想一想,这不是在那里谁使用HMVC框架的人90%+打算从中获得真正的,实际的,一天到一天的收益。



Answer 3:

HMVC是密切相关的“基于组件”的方式进行调度。 基本上,代替具有单个调度,委托给一个控制器,每个控制器可充​​当调度它自己。 这给你控制器的层次结构。 该设计更加灵活,使代码更好的封装,但在更高的抽象的价格。 Konstrukt是围绕这种模式。

也看到这个答案: https://stackoverflow.com/questions/115629/simplest-php-routing-framework/120411#120411



Answer 4:

在Kohana中,至少一个HMVC的要求是服务“内部” HTTP请求:而不是发行在网络上,它的路由,并派出由框架本身处理。 名称“HMVC”和“MVC”的相似性混淆,因为它表明,实际上不条款之间的底层连接存在:一个是不是一个小的变体或其他的修饰,它们是完全不同的事情。 (HMVC也被描述为不Ajax的客户端的HTTP请求。)Kohana的所强调的,并且支持“HMVC”是指该框架具有用于基于HTTP的面向服务的架构的有力支持。

这种建筑模式的优点是,由于相同的“调用约定”用于内部和外部的请求,这是微不足道的转换“内部”服务请求“外部”的要求,反之亦然在必要时。

虽然这是一个明智的架构模式,给它自己的名称似乎没有必要(Symfony2的描述相同的概念“ 子请求 ”),实际上其名称似乎是用词不当:没有特别的要求或需要,该请求形成层次(比每势在必行程序的标准调用图除外); 请求可以很容易地递归,例如。

[ 更新2011年4月,2012年3月:上扩展响应评论答案]



Answer 5:

HMVC是分层模型视图Controller.In正常MVC每一个GUI对象都有其MVC.But有母体GUI对象和子GUI对象不像HMVC之间没有任何关系。 在HMVC每个GUI对象访问其子对象和每个子对象都可以访问到它的父对象。

因此,在每个视图有一个父view.Through它可以访问它的父视图。 对于每个控制器有一个父控制器,通过它可以将事件传递到父控制器(如果事件不是在其范围内。)

有关详情介绍请点击这里

新的链接是这个地址



文章来源: What is the HMVC pattern?
标签: php kohana hmvc