近来设计模式风行,MVC随处可见,PHP领域也不例外,很多论坛都开始讨论在PHP中使用MVC。然而,M、V、C在PHP中到底该如何实现?MVC真的适合PHP么?这里Easy给出一些自己的思考。
MVC的原型
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
JAVA中的MVC
JAVA把MVC引入了Web领域,并在此基础上架构出了一套称为Model2的体系。由于Web的特殊性,JAVA中的MVC和Desktop中的MVC并不完全一致。主要原因是Web中的V不是持续的,用户每访问一次,V就要重新生成一次,所以V始终是和M一致的,不需要C来控制同步。那么JAVA中的C在干什么?JAVA中的C通常用于流程的转向,其实用的是Dispatch模式,不再是Desktop中的C了。
PHP中的MVC
要在PHP中原封不动的COPY JAVA的MVC是不可能的。问题主要表现在M上,在JAVA中,M是独立于业务逻辑和表现逻辑的数据模型,在服务器端跨页面存在,JAVA Bean扮演的就是这个脚色。而PHP进程并不长时间驻留于内存,只在PHP页面开始执行时创建,在页面解释执行结束时就已经结束。在这样的情况下,我们根本无法直接实现M。所以所有声称实现了MVC模式的PHP程式都只能通过模拟手段来实现M。实现的方式一般是在当前页面结束前把数据存入数据库或者cookie/session,在下一个页面中再透过数据库或者cookie/session重建M。这样的方式和JAVA中的Bean比起来可以说是开销巨大,本来往内存中写数据的简单操作现在要从服务器端传到客户端或者数据库,然后再传回来。与其用这么大的开销来维护一个数据模型再在最后把这个模型塞回数据库,还不如直接根据需要更新数据库里边的数据。
现在PHP中的MVC架构可以用下图来表示。
然后我们再来看V。现在很多PHP程序简单的使用了一些模板技术就在说明中写“采用MVC架构”。其实绝大多数的PHP模板程序都只是分离HTML和PHP的,而非MVC强调的显示逻辑和业务逻辑分离。一个混用HTML和PHP的页面一样可以是MVC的一部份。如何分离显示逻辑和业务逻辑至今没有一个满意的方案。我个人则比较认同http://www.phpe.net/articles/384.shtml的实现方案。至于C,和JAVA中差不多,还是被用作转向,这个在PHP中其实并不重要。
一个极耗资源的M + 一个区别不大的V + 可有可无的C 构成了PHP中所谓的MVC。
基于以上分析,Easy认为,PHP原有的3层构架比所谓的MVC更为高效,而3层构架中的表现层要解决的问题MVC中的V也同样存在。一个改进后的3层架构比MVC更适用于PHP。
PS:有的方案把业务逻辑并入M中(http://www.phpe.net/articles/382.shtml),这其实是MVC的思想背道而驰的。
|
相关推荐
麦肯锡:破解迷思,探索高质量银保发展新模式(2021).pdf
CEO管理运营之道经典实用课件之二:CEO四大迷思.ppt
Product Series | 产品迷思,商业产品经理的自我修养 承载了笔者对于产品设计、交互体验、文档创作与演示、项目管理、行业视点等多方面的思考。 Preface | 前言 笔者并非专业的产品经理,不过还是想自己能成为一名...
人工智能(AI)作为一门划时代的伟大技术,在教育领域的应用和发展,往往会伴随着教育迷思的出现。这些迷思主要源于人们对AI技术的过高期望、缺乏科学认识、以及AI与教育结合的不确定性。文章中提到了几个关键点,...
### 破除迷思:SOC中的AI 在当今高度数字化的世界中,网络安全已经成为企业和组织不可忽视的关键领域。随着威胁的不断演变和技术的进步,安全运营中心(SOC)面临着前所未有的挑战。本文旨在深入探讨SOC中引入人工...
【全球负利率对大类资产配置的影响】 负利率政策在全球范围内逐步推行,其核心目标是刺激经济复苏,提升价格水平,稳定汇率,并试图通过降低借贷成本来鼓励投资和消费。然而,这一政策的效果并不一致,具体成效因...
机器人新闻的迷思:“记者”将被淘汰.pdf
《教养的迷思》读后感.pdf
《魔法与科学:人工智能的教育迷思及其祛魅》这篇文献深入探讨了人工智能在教育领域中的应用及其引发的观念误区。随着科技的飞速发展,人工智能(AI)逐渐渗透到各个行业中,教育领域也不例外。然而,随之而来的是...
破解市场迷思: MIPS - 最适用于设计MCU的处理器.docx
科技品牌十大迷思
解析自有品牌策略与绩效关系的迷思:层级贝氏回归模式之运用.pdf
《CEO的四大迷思》是一本探讨领导艺术的著作,由美国管理顾问帕特里克·兰西奥尼撰写。兰西奥尼以其在管理咨询领域的丰富经验,揭示了CEO们常常陷入的四个主要误区,并提出了如何构建和维持一个健全组织的见解。以下...
为了破解这些迷思,麦肯锡等专业机构提出了“八大关键战略举措”,包括同客户经营、规模化精准营销、产品定制、整合客户旅程、数据洞见共享、一体化团队协同、生态场景共创等。通过这些举措的实施,可以全面推动银保...
美国低通胀迷思与中期展望:高核心通胀将挑战美联储宽松政策
本文以小学数学微课程为研究对象,探讨了在线教学模式下如何通过发现学生的“迷思”、“错误”和“问题”来激发学生的深度学习,并以此为起点开发出有效的教学策略。 在微课程设计中,首先需要理解深度学习的概念和...
“七式团队迷思”是一个由心理学家欧文·珍尼斯提出的概念。这个概念描述的是一个团队陷入迷思的情况,从而导致团队作出一些劣质的决策。这种现象在团队管理中是非常普遍的,也是团队领导者需要特别注意的问题。 ...
《自我解释策略对转变学生化学平衡迷思概念的研究》这篇硕士专业学位论文主要探讨了如何通过自我解释策略来改变学生在化学平衡领域的错误认知,即迷思概念。论文作者为刘瑞东,由陈康叔和黄燕宁两位导师指导,属于...