仓酷云

标题: PHP网页编程之PHP:MVC迷思 [打印本页]

作者: 莫相离    时间: 2015-2-16 00:29
标题: PHP网页编程之PHP:MVC迷思
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。   最近设计形式流行,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的思惟南辕北辙的。

更多相干会商请到会商区:http://club.phpe.net/index.php?act=ST&f=15&t=4720  告诉你了一个方式,但是缺少努力这一环节,那也是白搭。
作者: 兰色精灵    时间: 2015-2-16 04:55
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 柔情似水    时间: 2015-3-3 14:54
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 精灵巫婆    时间: 2015-3-5 03:00
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 小魔女    时间: 2015-3-11 22:47
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 灵魂腐蚀    时间: 2015-3-17 18:10
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 谁可相欹    时间: 2015-3-22 01:09
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 若相依    时间: 2015-3-24 01:36
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 深爱那片海    时间: 2015-3-24 01:51
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 莫相离    时间: 2015-3-24 10:51
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 小妖女    时间: 2015-3-26 23:37
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 活着的死人    时间: 2015-3-31 19:25
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 愤怒的大鸟    时间: 2015-4-1 08:08
实践是检验自己会不会的真理。
作者: 爱飞    时间: 2015-4-3 23:35
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 乐观    时间: 2015-4-6 22:09
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 山那边是海    时间: 2015-4-12 13:54
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 第二个灵魂    时间: 2015-4-12 15:23
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 透明    时间: 2015-4-26 22:10
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 因胸联盟    时间: 2015-4-28 16:21
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 再见西城    时间: 2015-5-1 07:07
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 变相怪杰    时间: 2015-7-28 09:13
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2