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