32

我正在使用 MVC 模式进行 Web 开发。我使用 codeIgniter 框架。我发现http://fuelphp.com/http://kohanaframework.org/,他们正在使用 HMVC。仍然不清楚 HMVC 以及为什么我们应该使用 HMVC 而不是 MVC ?阅读 HMVC 模式后我很困惑,它与 MVC 并没有太大的不同。您能解释一下为什么我们应该使用 HMVC 进行 Web 应用程序开发吗?

4

2 回答 2

36

HMVC 可以做任何 MVC 可以做的事情,甚至更多

在 MVC 中您将或曾经遇到过的一件事是您无法从另一个控制器调用控制器(除非您使用自定义库或助手来执行此操作)

在 HMVC(分层模型视图控制器)中,您可以做到这一点,我将在这里总结所有品质:

  • 在其他项目中重用您的代码
  • 简化维护您的项目
  • 扩展您的项目
  • 组织代码
  • 模块化结构

尝试 HMVC 后你永远不会回到 MVC 这里是一张更清晰的图片

见图片

对于 CodeIgniter 使用“模块化扩展 - HMVC”

模块化扩展使 CodeIgniter PHP 框架模块化。模块是一组独立的组件,通常是模型、控制器和视图,排列在应用程序模块子目录中,可以拖放到其他 CodeIgniter 应用程序中。

模块控制器可以用作普通控制器或 HMVC 控制器,它们可以用作小部件来帮助您构建视图部分。

如果你想使用带有 HMVC 模式的 codeigniter,你可以使用 Modular Extensions - HMVC here

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

这里有一些不错的有趣的视频教程,可以让你在 codeigniter 中使用 HMCV

https://www.youtube.com/watch?v=8fy8E_C5_qQ&list=PLBEpR3pmwCawDZ6FgNYoyvicEz4HrJPec&index=1

希望有帮助!

于 2015-05-18T11:20:54.050 回答
22

Hierarchical-Model-View-Controller (HMVC) 模式是 MVC 模式的直接扩展,它设法解决了许多已经提到的可伸缩性问题。HMVC 最初是在 2000 年 7 月在 JavaWorld 网站上题为HMVC:开发强大客户端层的分层模式的博客文章中描述的。文章的大部分内容都集中在将 HMVC 与图形用户界面结合使用的好处上。一些建议作者实际上重新解释了 1987 年描述的另一种称为 Presentation-Abstraction-Control (PAC) 的模式。JavaWorld 中的文章详细解释了 HMVC 如何帮助设计带有 GUI 的桌面应用程序。本文的重点是演示如何使用 HMVC 创建可扩展的 Web 应用程序。

HMVC 是作为一个应用程序运行的传统 MVC 三元组的集合。每个三元组都是完全独立的,可以在没有任何其他组的情况下执行。对三元组的所有请求都必须使用控制器接口,从不加载它们自己域之外的模型或库。托管环境中的三元组物理位置并不重要,只要它可以从系统的所有其他部分访问即可。HMVC 的独特特性鼓励重用现有代码,简化系统不同部分的测试,并确保应用程序易于增强或扩展。

来自 Sam de Freyssinet 的使用 HMVC 扩展 Web 应用程序

于 2011-03-28T03:28:52.177 回答