最近看了一篇对比HMVC和MVC的文章,文章作者貌似非常支持HMVC,由各种方面阐述HMVC优点的确很多,尤其通过分层之后耦合度是大大滴降低。我之前也只是听过HMVC这种说法,不过没接触过,借这个机会,顺便了解一下这个结构的特点。
HMVC 维基百科:https://en.wikipedia.org/wiki/Hierarchical_model%E2%80%93view%E2%80%93controller
我的理解就是,一个网页包括很多部分,有页头导航,正文主题,侧边广告,页尾说明等很多个部分,那这些部分也有他们自己的MVC,网页需要把这些部分呈现出来就要通过网页自己的控制器(C)来引用这些部分的控制器(C),才能呈现出这部分的视图(V)。。。(貌似有点乱,不管了 (╯°Д°)╯︵ ┻━┻)
然后我找了一些基于HMVC结构的PHP框架,额也没有一些,只有很少。(1)MYQEE,特点就是HMVC结构的,貌似是国人制作的,不过已经很久没更新了。(2)CI,支持扩展HMVC结构(所以原本是传统MVC的咯)。
尝试了一下MYQEE,谈一下用后感。
(1)通过分层,使得在config.php内的各项目配置及层次清晰可见,能帮助开发者更快更彻底了解此项目框架结构。但是作为HVMC,其分层特点约束了最顶层(即整体显示层)必须根据层次才能引用到最底层的文件,所以中间过渡层可能会导致多引用了一些不必要的文件或代码。
(2)因为分层配置的特点,所以不需要namespace命名空间,当然也不用在文件头use 或include云云。但是港真我觉得命名空间真的很好用诶,怎么可以把这个优秀特性不展现出来呢....这个只作为个人意见(或偏见)。
(3)综合网上各方面意见还有自己的观点,HMVC因为有其结构的限制,的确适合庞大且复杂的系统,当然小系统就没有必要复杂化。不过传统MVC只要把目录结构分好,各类型代码分门别类放置,这效果也是能和HMVC媲美的。
HMVC和MVC哪个好?会不会和 PHP和JAVA哪个好? 一样斗得你死我活呢...
哈哈哈拭目以待吧
如有错误,恳请指点。_(:з」∠)_,谢谢观看。
参考:
《改进HMVC设计模式应用于PHP开发的探索》马海波,李圣龙
《HMVC框架特点》:http://blog.sina.com.cn/s/blog_75a2f94f0101a7ia.html