2010-02-22 37 views
12

我使用的PHP框架(Kohana)最近实现了HMVC体系结构。我已经读过,它是一个分层的mvc,其中请求是相互重叠的。它有点像ajax,只是纯粹的服务器端。我已经在一些实验中应用了它,但是我不能将它应用到我的任何项目中(因为我找不到它)。你曾经在项目中使用过HMVC吗?它对你有什么帮助?什么可以使用HMVC体系结构?

+1

+1,我最近从Code Igniter转到Kohana,想知道同样的事情。 – 2010-02-22 03:44:39

回答

14

这是一个有点像阿贾克斯,只是纯粹的服务器-侧。

这是一个很好的比喻。

HMVC很适合将小部件添加到页面 - 模块化内容部分,您可以在几页上重复使用。例如,购物车小部件。你可以用不同的方式做同样的事情:

  1. 一个库。我们习惯于将可重用代码从控制器移动到库中。然后,从控制器中,您可以将对该库的调用结果加载到视图变量中。
  2. 一个视图。您可以从主视图中加载视图(部分)。该观点部分可能会从模型中获取内容。从视图调用模型并不总是受欢迎,但并不一定是错误的。

同时,Kohana HMVC有几个优点:

  1. 一致性 - HMVC请求被视为与外部的http请求。
  2. 电源 - HMVC请求与包含路由的http请求具有相同的Kohana资源。
  3. 可插拔性 - 从视图中调用时,HMVC请求在控制器(将库结果分配给视图)和视图占位符之间没有耦合。你只触摸一个文件而不是两个文件。

我开始欣赏HMVC和具有http请求的可伸缩性,由Kiall链接。 CURL也可以做同样的事情。然而,从一开始就设计Kohana HMVC比CURL更自然。

+0

上面的文章链接是好的,但是这提供了一个简短但简明的答案。谢谢! – yretuta 2010-02-25 01:28:34

8

好的 - Sam de Freyssinet(aka samsoir),Kohana开发者之一,最近发表了一篇关于这个问题的文章。

http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

虽然它不是HMVC的唯一用途 - 这是它的比较流行的应用之一。本文主要关注可扩展性(如每秒请求数),但代码可扩展性(如代码维护简单/难易)可通过相同想法“解决”。

希望这有助于:)

(附注 - 他的代码示例基于山姆的个人变化的Kohana - 见注释在文章的末尾)

+1

我其实刚刚注意到URL中的日期是今天..好的时机:) – Kiall 2010-02-22 23:36:38

2

在一个简单的项目中,您甚至可能找不到HMVC体系结构模式的实际用途。你甚至不应该尝试。这是为什么:创建一个HMVC体系结构的关键在于使MVC变得更干燥一点。 HMVC的主要好处之一是代码重用。它可以让你的碎片在整个应用程序中重复(有时在同一个地方,其他时间 - 不)。

如果您正在编写小型测试应用程序,那么不会有任何可重复的片段。因此,不需要使用完整的HMVC潜力。你最终只能得到1级HMVC,这是你的标准MVC。

Here you can read the original publication, which introduced HMVC. 2000年。