在框架盛行的今天,MVC也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好,其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的。
每次我面试应届生时都会问他使用过什么框架,并谈谈对这些框架的理解。当面试有经验的程序员时,会让他自己写一个框架出来。其实也不是让他编码,只要有思路就OK了。我觉得,如果一个有一年经验的程序员连一个Framworkv0.0.1都开发不出来的话,肯定是没有深入理解一个框架。
前几天
phonixg说要自己写个MVC框架。而且他也确实不仅仅是说说而已,短短一个周末,这个框架雏形就神奇的出现在了github上。这篇博文的名字是『自己动手设计PHPMVC框架』,所以本文不会涉及太多的编码,文中出现的任何代码片段都是我直接在vim里面敲的,没做任何测试,如果想使用文中代码需自行测试。
跟随本教程,将从零开始设计一个属于自己的MVC框架。
我使用过ZndFramwork、CodIgnitr,每个框架都有自己的优点和不足。在写本文之前,我又看了Symfony、cakphp、MooPHP、doitphp等的核心源码,下面说说我将把我的框架设计成什么样子,这一章主要讨论URL的设计。
1.REST
在这个REST横行的时代,如果一个框架不支持REST,肯定被前卫程序员所瞧不起,所以本框架也要支持REST。
第一个设计准则:所有东西都是资源,资源有多种表现形式。
不管实际上存在的,还是抽象上的,所有资源都会有一个不变的标识(ID),对资源的任何API操作都不应该改变资源的标识。
事实上,上面的这些完完全全是按照互联网的特性提出来的。
互联网中,一个URL就是一个资源;
资源的内容就是HTML页面;
不管怎么改HTML内容,URL都不会改变;
资源之间通过HTML里的连接联系起来;
每次获取的时候,获取到的都是完整的HTML内容。
比如