我目前正在开发自己的PHP 5.3 HMVC框架,名为Alloy。 由于我在HMVC上大量投资和销售,我认为我可以提供不同的观点,也许可以更好地解释为什么应该使用HMVC及其带来的好处。

使用HMVC架构的最大实际好处是内容结构的“小部件化”。 一个示例可以是评论,评级,Twitter或博客RSS提要显示,或电子商务网站的购物车内容的显示。 它本质上是一段内容,需要跨多个页面显示,甚至可能在不同的地方显示,具体取决于主HTTP请求的上下文。

传统的MVC框架通常不能为这些类型的内容结构提供直接的答案,因此人们通常最终会复制和切换布局,使用自定义帮助程序,创建自己的窗口小部件结构或库文件,或者从主要请求中提取不相关的数据 控制器推送到View并在局部渲染。 这些都不是特别好的选择,因为呈现特定内容或加载所需数据的责任最终会泄漏到多个区域并在所使用的位置重复。

HMVC,或者特别是向Controller发送子请求以处理这些责任的能力是显而易见的解决方案。 如果你考虑一下你正在做什么,它就完全符合Controller结构。 您需要加载一些有关注释的数据,并以HTML格式显示它们。 因此,您向注释控制器发送请求,其中包含一些参数,它与模型交互,选择视图,视图显示内容。 唯一的区别是您希望在用户正在查看的博客文章下方显示内联的评论,而不是完全独立的完整评论页面(尽管使用HMVC方法,您实际上可以使用相同的控制器同时提供内部和外部请求并“杀死” 一石二鸟“,俗话说”。 在这方面,HMVC实际上只是努力增加代码模块化,可重用性和保持更好的关注点分离的自然副产品。 这是HMVC的卖点。

因此,虽然Sam de Freyssinet的关于使用HMVC扩展的TechPortal文章很有意思,但使用HMVC框架的人中90%以上的人不会从中获得真正的,实用的,日常的好处。

mvc和php的关系,php - 什么是HMVC模式?相关推荐

  1. 什么是Vue.js?||为什么要学习流行框架||框架和库的区别?||MVC和MVVM的关系图解

    什么是Vue.js? Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于W ...

  2. MVC和MVVM的关系图解

  3. 浅谈MVC设计模式和SSH框架的关系

    一.MVC:是指Model-View-Controler,是程序的一种分层模式,是一种思想. MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制 ...

  4. Spring、 Spring MVC、 Spring Boot的关系

    一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系.其核心就是控制反转(IOC) ...

  5. Spring MVC 到 Spring BOOT 的简化之路

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:juejin.im/post/5aa22d1f5188255 ...

  6. 关于对FLASH开发,starling、starling feathers、starling MVC框架的理解

    说在前头:楼主之前没有不论什么flash开发经验,仅仅是从一次尝试中总结自己的理解和经验而已.假设有写的不正确的地方,欢迎大家指正. 前一段时间尝试想用flash(as3)又一次制作一下之前做的一个游 ...

  7. 学习 ASP.NET mvc 第一天、也可能是最后一天

    学习 mvc 第一天.也可能是最后一天呵呵 今天帮哥们解决几个问题!有的和 mvc 没啥关系其实,邮件直接贴的呵呵 有代码附件在下面: ----------邮件开始------------- 1.如何 ...

  8. 也论PageController/FrontController与MVC

    业界对于MVC这个名词的误解与滥用, 尤其是对与PageController和MVC的混淆, 在ASP.NET下, 比较典型的是出自于以下两篇文章里面的遣词造句: http://www.microso ...

  9. mvc与三层结构终极区别

    又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了. 这两个东西我接触有几年了,有一点体会,表达一下: ...

最新文章

  1. PostgreSQL获取年月日
  2. 微信红包的架构设计简介
  3. Linux下用arptables防arp攻击
  4. windows下批量修改文件(或文件夹)权限或所有者
  5. Linux 定期删除3天以前的日志文件
  6. wxWidgets:wxEventFilter类用法
  7. [Offer收割]编程练习赛15 A.偶像的条件[贪心]
  8. HTML标题h,HTML H标题标签
  9. 指针数据类型 java_C/C++ 指针的小结——指针与其它数据类型(数组、字符串、函数、结构体)的关系...
  10. php memcached 设置过期,memcached过期时间无效
  11. 菜鸟教程python3 mysql_python基础教程使用Python操作MySQL的小技巧
  12. 认识Spring核心容器IoC/DI
  13. centos 低版本出现fatal: unable to access 'https://github.com/XXXX': SSL connect error
  14. 《Windows核心编程》---Windows服务
  15. 【Java】Java8 LocalDate日期时间用法总结
  16. 产品研发过程管理专题——软件项目范围变更流程与过程控制研究
  17. 基于深度学习的图像超分论文推荐
  18. 基于java《数据结构与算法》网上教学系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  19. 叶聪:朋友圈背后的计算机视觉技术与应用 1
  20. 微x怎么设置主题_微信主题怎么设置 微信主题设置方法

热门文章

  1. 山西职称计算机考试报名时间 2014,2014山西省6月份职称计算机考试报名入口
  2. RDD 与 DataFrame原理-区别-操作详解
  3. [原理篇] Soft Regression
  4. C++动态数组(转)
  5. 大富翁已成过去-我的一些感想
  6. getpeername函数与getsockname函数的介绍
  7. Makefile使用规则
  8. jmeter结果分析
  9. 如何告别半途而废——韦东山嵌入式Linux视频学习笔记00
  10. 开启分页机制———《x86汇编语言:从实模式到保护模式》读书笔记44