很多人学了许久的PHP,但对于框架和CMS的认识比较模糊。
这个其实很重要,应该全面而清晰的认识。本人结合自己多年的开发项目经验,斗胆总结一些,供后来学习者参考:
1:各自代表
框架代表:ThinkPHP(简称TP,以及它的最新版TP5),Laravel,YII,CI,……
CMS:Content Management System:内容管理系统;代表有:PHPCMS,dedecms,phpMyWind,帝国CMS,Ecshop,ECMall,Discuz,PHPWind
2:知识难度
框架需要的知识含金量比较高,对面向对象编程思想要深入理解,也要深刻懂MVC原理,单入口原理,标签解析引擎原理,方可以灵活使用框架去开发;所以它是适应PHP基础比较全面的人;
而CMS不需要那么高深的知识,你稍微懂PHP一些语法,基础东西,就可以依葫芦画瓢的使用CMS开发出一个简单的项目,而且速度还比较快(但是维护起来会头痛)。
CMS对PHP入门级的人是最爱。
3:应用范畴
CMS的应用范围有局限,要选对,否则后患无穷。如:某类CMS只适合开发一类项目,选错了可能要重新开发。比如PHPCMS适合开发文章类型的管理系统,Ecshop适合开发商城类型的项目,Discuz适合开发论坛类型的项目;但是你如果要用Ecshop来开发论坛,就需要改的地方太多了,那就会走很多弯路….
而框架,因为属于更底层的东西,所以它可以用来开发任何类型的项目。
另外,框架还可以开发CMS出来,但反过来,CMS就不能用来开发框架(会造成性能太低)。
4:开发特点
在框架中,你可能看不到一个具体的控制器子类文件,所以基于框架的开发,首先要你自己来写控制器文件,还要安排在什么位置写,这些都有框架自己的规矩,虽然也可以灵活的修改文件夹的位置,但你要麻烦的去寻找为什么。
而CMS等开源系统,这些文件都是帮你写好了的,位置也会帮你安排好,你在那些现成的文件上修修改改基本上就可以了。你会少很多事情。
5:灵活性对比
用框架去开发,你可以随意修改你的项目模块架构,可以随意添加你想要的功能,如:你想在文章系统中添加个旅游模块也可以;实例:“PHP葵花宝典”项目(www.phpkhbd.com)就是用框架开发出来的,可以方便的添加任何想要的功能。
但CMS你要想做到这种穿插功能交集就比较麻烦了。
6:速度对比
用框架去开发,开发的时候速度慢,但后续修改灵活,同时速度会很快,遇到问题可以马上知道处在哪里了,可谓是“一步到位、一针见血”。
用CMS去开发:开发的时候速度快,但后续修改特别是添加功能模块的时候,就不够灵活,会造成速度很慢,甚至不大可能实现。
打个比方:你用框架开发的项目,开发的时候可能需要2个月,但你后续升级项目,添加个什么功能可能只要1个星期。而你用CMS去开发,开发项目上线可能只要3个星期,但是你升级功能、添加新功能模块、可能也要3个星期甚至更多,还有可能实现不了,或者强加进去会造成该模块性能甚至整个系统的性能大大降低。而且每次升级都是这样。
所以,该如何选择,你应该清楚了吧:如果想做一个长久更新的项目,那使用框架去开发是最好的选择。
最后用一个比喻来总结:建房子
用框架去开发项目,相当于你会起房子;
但是你要做的事情要从这里开始做:你要先给房子打基脚(基脚要挖几米你要计算好)、房子有几根柱子撑起你要计算承受力,每层楼盖几个房间你也要计算好,每间房间怎么布局也要你来做。这些都做好了,然后你才来安装窗户,粉刷墙壁,贴墙纸…
用CMS去开发项目,相当于你只会装修房子;
至于房子的基脚有多深,房子是几层楼,每层楼的房间格局、玻璃的安装窗口你都控制不了。但是你要做的事情也很省事:你要做的事情就是在可以安装玻璃的地方安装什么牌子的玻璃(但是你不能修改该窗口是朝东开还是朝西开,因为这是建房子的人决定了的),刷白色或者红色的墙壁、贴什么内容的墙纸(美女型或者森林型,由你定)…..
这两种结果谁好谁不好,要看你的兴趣爱好了。如果你是个有个性的人,你可能就崇尚能建房子的能力,如果你是比较懒惰的人,你可能崇尚那些只要装修的房子让你装修就进去住了。
特别说明的是:如果房子的创建有问题,比如你想把一层楼创建4个房间改成5个房间,那就只能是有创建房子能力的人重新改造房子了,简单的装修工人是没有权利的。框架开发就是有改造房子的权利…
而你如果还是装修房子中更为简单的工作,比如只写模板,只套模板,那你就相当于连电脑桌都要老板准备好,你只是在电脑桌上怎么摆放你的电脑、鼠标、键盘而已,那种“家具齐全、直接拎包入住的酒店”就是最好的代表……