什么是HMVC模式?
阅读Kohana的文档,我发现3.0版本的主要区别在于它遵循HMVC模式,而不是像2.x版本那样遵循MVC。Kohana的文档和维基百科上关于此的页面并没有真正给我一个明确的想法。
所以问题:什么是HMVC模式,它与MVC有何不同?
阅读Kohana的文档,我发现3.0版本的主要区别在于它遵循HMVC模式,而不是像2.x版本那样遵循MVC。Kohana的文档和维基百科上关于此的页面并没有真正给我一个明确的想法。
所以问题:什么是HMVC模式,它与MVC有何不同?
我目前正在开发自己的PHP 5.3 HMVC框架,称为Alloy。由于我在HMVC上投入了大量资金并被出售,我认为我可以提供一个不同的观点,也许可以更好地解释为什么HMVC应该被使用以及它带来的好处。
使用HMVC架构的最大实际好处是内容结构的“小部件化”。例如,评论、评级、Twitter 或博客 RSS 源显示,或电子商务网站的购物车内容显示。它本质上是一段内容,需要跨多个页面显示,甚至可能在不同的地方显示,具体取决于主HTTP请求的上下文。
传统的MVC框架通常不会为这些类型的内容结构提供直接的答案,因此人们通常最终会复制和切换布局,使用自定义帮助程序,创建自己的小部件结构或库文件,或者从主请求的控制器中提取不相关的数据以推送到视图并以部分方式呈现。这些都不是特别好的选择,因为渲染特定内容或加载所需数据的责任最终会泄漏到多个区域,并在使用的地方重复。
HMVC,或者特别是将子请求分派给控制器以处理这些职责的能力是显而易见的解决方案。如果您考虑一下自己在做什么,它完全符合控制器结构。您需要加载一些有关注释的数据,并以 HTML 格式显示它们。因此,您向具有一些参数的注释控制器发送请求,它与模型交互,选择一个视图,视图显示内容。唯一的区别是您希望以内联方式显示评论,在用户正在查看的博客文章下方,而不是完全独立的完整评论页面(尽管使用HMVC方法,您实际上可以使用相同的控制器同时满足内部和外部请求,并且俗话说“一石二鸟”)。在这方面,HMVC实际上只是努力提高代码模块化,可重用性以及保持更好的关注点分离的自然副产品。这是HMVC的卖点。
因此,尽管 Sam de Freyssinet 的 TechPortal 关于使用 HMVC 进行横向扩展的文章很有趣,但并不是 90% 以上使用 HMVC 框架的人会从中获得真正、实用的日常好处。