关于MVC模式
对于这个三个字母组成的这个专业名词,paperen我就不具体解析太多了,因为自己也不是十分十分的掌握。对于初学者而言或许你不用过分地从这个名词开始你的php之路,但是如果你走在php的道路上时就不可不知道这个名词了,因为这种思想对于开发网站而言是十分有利的,充分体验就是它将一个站点的分离成三个大体部分,M(模型),V(视图)和C(控制器),而正是这样使之可以使用具有不同专长的人员进行整个站点的开发,比如你是一个优秀的网页设计师,那么好简单你的工作就是去写好你的css,js还有html结构,当然他还要学一种模板语言,或者是开发小组自定义的一种模板语言,他不用理会过多关于php的东西甚至数据的组织问题。至于模型应该是算法最为之集中的地方,与数据库交互并处理数据,而这个部分就交由程序工程人员吧,而他们也不用处理任何页面表现的东西。而(C)控制器就是衔接V与M的一个桥梁吧,通过浏览者的动作去触发相应的响应进而通知相应模型获得数据之后再放入视图进行显示,那么一个页面就是如此完成了。?
当然啦,开头说了这些都只是一个很模糊的描述,paperen我也不是理解得很深刻,但是看了一下《php高级程序设计》一书还有看了一些开源的代码,也使用过qeephp这个框架就不多不少有了点了解。有这个思想是很重要的,所以在开发中就要向这方面去靠。?
对于模板语言,当然你可以使用smarty,还可以自己定义自己的一套,在paperen看的一些开源程序中就经常使用一些正则去将这些模板语言翻译成能被php解析的语言。而显然这一部分是很好理解的,如果真的还是不那么了解你可以去看看phpcms的那些视图文件。?
类似这样 $str = preg_replace("/{([A-Z_x7f-xff][A-Z0-9_x7f-xff]*)}/s", "",$str'>\1;?>",$str); 然后视图文件中?
真正纠结的是对于M与C这两个部分,因为我们经常是将处理数据与响应浏览者动作放在一起的。?
举个例子吧,比如我们要做一个文章发表的功能,这个文件时post.php,这个页面有一个表单的html结构,它的视图确实很简单的了,第一次加载或者是说填写信息的时候也是不需要与数据库交互的,但是当数据提交时你得将表单的数据插入到数据库,并且必要时需要进行判断数据的正确性或者对数据进行一定处理,那么你可能会想到在建一个叫save的页面由它来接受来自post页面的数据,但是之后你可能会把save的功能全部放在post页中来,因为你发觉你可以使用一些$_POST变量是否存在来判断本次交互是否提交数据,所以你会在post.php前面加入一段用来处理提交数据与插入数据库的代码,它其实与填写数据无关也与视图无关,但是它与我们点击“发表”这个按钮后有关,好了,现在我们这个post页的代码确实是够强大了,强大得可以成为一个独立的文件存在,因为考虑到它的独立性,我们不可能将其放置在一些目录下,一般我们会把放在根目录下,随着功能的强大,这种单独文件的代码也会因此增加,数量也会增加,而典型的会出现“大头”的现象就是你会发觉这个文件中头部的代码是十分复杂的,而这种开发根本就是没有控制器而言,因为每个文件就是一个控制器,访问每个文件就等于触发了不同的动作,而模型的概念就是每个单独文件的大头部分。?
这样的开发对于大型站点是相当不利的,即使你使用了引用外部库文件的思想来进行开发但是最后的维护也是变得异常的烦躁,对于修改一个视图元素你可能会需要更改其“大头”部分中的一些代码。?
固然引用专业用语对MVC的优点的描述是--“模型―视图―控制器模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。”?
你可能会问“哦~~这样啊,那我怎样使用MVC呢?”答案是使用框架开发吧……那等于你需要去学习框架,而那又是一个新的开始,确实,对于初学者来说学习框架好像就是与底层php脱离了关系了,或者这样说,一个好的框架就是让我们对底层的php越来越疏远,因为框架已经将所用功能封装得滴水不漏,而我们只需要看完其文档然后根据它的规则进行开发,开发会变得很高效,很方便。?
而paperen我又记得那次面试时那个经理问我MVC的问题,他对这方面还是有点了解但是了解不深,他问我“使用MVC与不是用MVC开发有什么区别么?是不是会导致网站速度降低”,这个paperen当时的回答是“速度上应该是不会有什么差异的”(除非都没有使用缓存文件的功能),相反不一定说使用MVC就比不适用MVC快,但是使用MVC就是有利于以后的维护也有利于开发。其实现在paperen我还是不知道我的回答是不是对的。或许以后的一天会有更深刻的了解吧。?
paperen我始终不认为事情的发展是有必然的关系,正如你学习MVC那样,对于一个php开发人员来说,你可以不去使用MVC去开发网站程序,只是你会比较累一点,但是你并不会觉得没有意思,不会妨碍你展开你美好的网站开发生涯,不过~~可能到最后你还是要学习它,使用它,因为你热爱开发,热爱你所写的代码,你想让网站的布局还有代码完美得像一首诗,不然怎会有人说“Code is Poetry”。?
http://zh.wikipedia.org/wiki/MVC百度百科--MVC http://baike.baidu.com/view/31.htm
評論
0沒有任何評論