快速业务通道

MVC及PHP++、PHP--胡思乱想杂记

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23

有一定经验的开发者都了解MVC模式,特别是基于WEB而且又是可以使用嵌入HTML语言进行开发的,比如PHP。诚然PHP作为一种嵌入式的脚本语言是强大的,这也是一直以来传统PHP给很多人的认知。以至于在PHP3甚至在PHP4时代接触过并最终放弃了PHP的人,都停留在这个认识上,认为PHP没有什么长处,太过简陋。其实不然,从技术角度来讲,一门语言的语法不能决定一个应用的好坏,很多情况下,语言仅仅是实现工具,几乎所有大中型应该都不太会单一的采用一门语言来开发,各种语言都有其自身的长处。

    长期以来PHP被杂糅进太多的东西了,要负责Db、又要负责HTML、还要负责Controller、还要负责Model,等等,成了PHP++了。发展到今天,PHP早就脱离了嵌入HTML脚本语言的范畴。应该有更重要的事情给PHP做。当然嵌入HTML当脚本使唤,仍然是强项,但不应该杂糅了。在此换个角度来看PHP。把PHP按角色来理清一下,顺便来发明几个新名词。与数据库层面打交道的叫PHP-Db,与流程控制相关的叫PHP-Controler,与HTML等终端呈现打交道的叫PHP-Client,等等。这样认识可能会更清晰点。

 

MVC及PHP++、PHP--胡思乱想杂记
MVC及PHP++、PHP--胡思乱想杂记

 

    这几天闲来无事,朝思暮想,对MVC的理解有了新的认识,有一点点浅见,于是折腾了一张图。
 
折腾半天最大的收获是我们是否需要很肥大的View呢?在各种PHP框架中,View端的语言基本上都采用PHP-Client,比如ZendFramework、QeePHP等,还有的采用模板标签或模板引擎。在我看来这其实是方便开发者使用的,其实对于View,可以精简至极至。图中的Input和Output都涉及到View。精简后的View可以根本就不用去管Input和Output的设备、形式、语言,只需要Input进正确格式的数据(比如JSON、XML),而Output出指定格式的数据(比如JSON、XML)。同样,Output的呈现形式、方法、手段等不是我们要关注的。对于WEB来说可以Output出的数据可以交给ExtJS,可以交给PHP(此时的PHP是WEB前端脚本语言),可以交给原生Javascript处理。甚至可以以WML语言输出到WAP。也就是说View如何呈现不是核心所要关注的。
 然而我们是怎么做的呢?在Controller中很多开发者并不注重数据的格式统一与规划,很随意的就丢给了View。更有甚者Controller和View杂糅了,权责不分,该View做的事让Controller做了,而View又在做Controller的事。不管是从设计简单的网站应用出发还是企业行业应用出发,PHP-Controller都不应该糅进PHP-Client。View里Output出单纯的格式化的数据,有利于AJAX及WebService等。规范了输出,View的呈现就可以由其它团队单独负责,他们爱用PHP,爱用ExtJS,爱用jQuery,爱谁用谁。

 至于什么是Model我也理解一下,理解的不对的话,请各位多踹几脚。Model在很多人心里长期以来被Db给占了。而在Controller中写了大量应该Model去完成的内容。广义上说其实Model并不仅仅是Db。比如我们用的FCKeditor我们可以说是一个Model,它用来创建一个可视编辑器。大方面的Model估计都能重视。再说一个小的,比如一个用户系统中的“用户新增(UserAdd)”这个功能,用户端可能是用户注册,管理端可以是直接创建一个用户。如果在控制器里直接写,用户端和管理端那就重复写代码了。这样的功能就应该放到Model里,拿来调用。这个就叫Model,类似函数,也叫业务逻辑。控制器控制的只是业务流程。如果控制器掺和模型的事,凡事诸葛亮,会弄得拥肿无比,非常繁琐,会被累死。
Cache又是一个什么概念呢?一个简单的例子,商品分类列表,当去存取这个列表时,核心就应该先去Cache里找,找到了核对一下是不是要更新,如果没找到或者要更新,那么就先更新或者在Cache里建立一个副本(这显然是一个很小的循环或者是分支判断)。然后把Cache里的列表取出来。这样做是免除大量的去存取数据库操作,或称为大量的Model运算。当然我们可以设计成,如果这个列表有变动就主动去更新Cache。这样命中率会高很多。应该的效率就会提高很多。很多人以为生成静态HTML脚本就是Cache的全部,只是Cache局部小应用,模板引擎里常用。想开了去,放大了说,Cache跟View没直接关系。Cache可以用在View,当然也可以用在Controller和Model。

 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号