我可以使用HMVC架构?

时间:2010-02-22 03:05:47

标签: php kohana kohana-3 hmvc

我正在使用的PHP框架(Kohana)最近实现了HMVC架构。我已经读过它是一个分层的mvc,其中请求是在彼此之上进行的。它有点像ajax,纯粹是服务器端。我已经在一些实验中应用了一些但我不能将它应用于我的任何项目(因为我找不到它的需要)。您以前曾在项目中使用过HMVC吗?它对你有什么帮助?

3 个答案:

答案 0 :(得分:14)

  

有点像ajax,只是服务器端。

这是一个很好的比喻。

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

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

    1. 一致性 - HMVC请求的处理方式与外部http请求相同。
    2. 电源 - HMVC请求与http请求具有相同的Kohana资源,包括路由。
    3. 可插入性 - 从视图调用时,HMVC请求在控制器(将库结果分配给视图)和视图占位符之间没有耦合。您只触摸一个文件而不是两个。
    4. 我开始意识到HMVC的情况以及Kiall链接的http请求的可扩展性。使用CURL可以完成同样的事情。然而,从一开始就用Kohana HMVC设计可能比使用CURL更自然。

答案 1 :(得分:8)

嗯 - Kohana开发人员之一Sam de Freyssinet(又名samsoir)最近发表了一篇关于这个问题的文章。

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

虽然它不是HMVC的唯一用途 - 它是其更受欢迎的用途之一。本文主要关注可伸缩性(例如,每秒请求数),但代码可伸缩性(如,维护代码的容易/难度)可以用相同的想法“解决”。

希望这会有所帮助:)

(旁注 - 他的代码样本基于Sam对Kohana的个人更改 - 请参阅文章末尾的注释)

答案 2 :(得分:2)

在一个简单的项目中,您甚至可能找不到HMVC架构模式的真正用途。你甚至不应该尝试。原因如下:

创建HMVC架构的重点是让MVC有点干。 HMVC的主要优点之一是代码重用。它可以让你拥有在你的应用程序中重复的片段(有时在同一个地方,其他时间 - 不是)。

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

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