20160806,我的第一个博文【关于PHP框架之我见】

大四一年的时间,从只有编程基础,到开始了解Yii框架,到实战,到毕业,到来上海,我的第一份正式工作,到开始接触不同的PHP框架。在这个周末,无心再编程的我,也来谈一下这个老生常谈问题。


1.在PHP开发中到底应不应该使用框架?

有人会说,原生PHP本来就很简单,而且效率极高,在掌握了PHP语言以后为什么要再花学习成本来学习一个框架来完成开发呢,况且一些大型框架中有很多根本用不上的方法,会拖慢整个程序的运行效率,为什么要做这样一个吃力不讨好的额外的工作呢?
这个问题在我看来,很好回答。
第一,框架肯定要用。原因很简单,再牛逼的程序员可能也无法考虑到方方面面,特别是当你开发一个大型的webapp时,有时候突发而来的用户需求会让你手忙脚乱,一个成熟且全面的框架会让你变得很从容,当你开始使用框架,你就会感觉自己仿佛站在了巨人的肩膀上,巨人的资源都会为你所用;
第二,合理选择框架很重要,确实,大型框架会拖慢运行效率,但一般来说,框架开发者会考虑到这方面的优化,但仍然要根据你所开发的webapp来确定。可以这么说,几乎每个老PHPer都会有一套自己写的MVC框架(无论此框架有多简单),其中最重要的原因有两个,一个是路由,另一个是MVC。如果有时间,我也会根据自己对PHP的理解写一套简单的MVC框架,这对今后的学习也非常重要。


2.谈谈我所接触的框架

我所接触的第一个框架是很多人都觉得很难学的Yii1.6框架,我使用这个框架第一次写PHP代码,写了第一个PHP页面,给公司的网站完成了基础建设,也用它写了我的毕业设计。很感谢这个框架,让我学习了很多知识。毕业后,来到上海,接触了第二个框架yii 2.0,这个框架引入了PHP5.4以后最新的代码规范和composer,也许之前开发的同为Yii,这个过渡让我没觉得有什么大问题,同样这个框架让我受益匪浅。一周前,接触了第三个框架,在国内与Yii齐名的我很久之前就非常想要研究的ThinkPHP,这个框架让我稍有迷惑,具体原因一会儿再说。最后说说几天前才刚刚看的Laravel,很强大,代码非常优雅,我非常欣赏,很可能以后的业余时间有很多都陪它了哈哈。这里所说的框架都是写过代码且有过小小研究的。以下不谈效率和源码,只从使用感受来具体说说这几个框架

1.yii 1.6 这是我接触的第一个框架。得益于PHP的语法友好性,大学里只深入学过JAVA的我也很快的入门了这个框架,这个框架在PHP5.4之前号称性能最为强劲。很像C的代码规范,非常明确的MVC结构给我的感觉并没有网上所说的难学,我用了这个框架一年,但感觉还有很多方法没有使用。虽然这个框架勉强能算是一个全栈框架(它貌似集成了一个bootstrap包),但这个框架给我的感觉还是挺自由的,没有在很多框架中的束手束脚,相信原生PHP开发者可以很快上手这个框架。但小部件给我的感觉是糟糕的。。它并没有想象中的好用,而且给人很强的束缚感,一旦你使用了它,就必须按照它给的语法来写,而且让我感觉写法很奇怪,还有一些小部件没法正常用(比如日历插件),也可能是我没有设置好的原因吧。但还是要感谢这个框架,真正让我入门PHP,学习了很多编程思想。

2.yii 2.0 这个框架是一个完全的全栈框架,但它的效率比1还高,应用了PHP5.4之后的最新特性,加入了composer,Gii也非常强大,CRUD一生成基于bootstrap的操作界面都有了。当你从零开发一个bootstrap网站时,你会感觉非常舒服也非常迅速,他的小部件要比1强大很多,特别是composer的加入更让它有了无限可能,支持Restful的API规范,还有等等一些功能,让它看起来简直完美。但是当我开始用它进行工作,是有点痛苦的。。第一,我要开发的网站前端使用了一套基于Jquery的UI框架,很多逻辑都在前端进行,后端只提供接口,这也是现在的潮流,降低耦合,提高可扩展性,但这些东西用在Yii2上有些奇怪且让我感觉大材小用。首先,数据库200+表,各种表之间的关系错综复杂,让ActiveRecord类无用武之地,基本上所有地方我都在用原生SQL语句,然后,我根本用不上yii2集成的bootstrap,你会感觉给了你一整套盖房的工具,但其实你不是要盖房,而是要装修。。但是写在这个框架的最后的是,这是一个很好很全面的全栈框架,如果你要从头开始建站快速建站,它很适合你,也很强大。

3.ThinkPHP 3.2 这是公司用的老框架,一周前我开始在TP上展开工作,这个框架用起来很简单,国人开发,全中文文档很能提高你的好感,同时也是国内最流行的框架,但它有几个问题,第一,用惯了YII明确MVC的我,发现卧槽,M没了。。变成了实例化方法,可能这样会提高效率,可能是我不习惯,但我会感觉这样让代码很乱,在Yii开发时,很多对数据处理的方法是写在M中的,控制器保持干净可读,逻辑清晰。但进入TP后,这样的感觉并不算友好。第二,当我看到 A() C() D() F() G() I() L() M()函数的时候直接吓哭了,这还是程序吗?你知道 C() 是干啥的不?控制器 Controller?缓存 Cache?不是,人家是 Config,操作配置文件的。这样设计的代码可读性基本为零。可能代码洁癖会很难受吧。但是TP最新版为5.0,我没用过,也不知道是否有所改进。在这个项目之后,我可能很少关注TP了,但是不能否认的是,TP很好上手,用起来也很简单,而且有中文文档,对于初学者很友好(但我并不提倡初学者学习TP这样英文26字母的命名方法)。初学者可以把它作为第一个学习的框架,或者一些小型项目也可以使用它快速开发。简单易用就是好框架,毕竟框架就是要为实际项目服务的不是吗?

4.Laravel 这个框架可以说我是久仰大名,但一直没空去看,前几天偶然的看了一眼,我立刻被吸引了,它的编程思想和规范都很独特,功能也很强大,当然,我还没有深入研究和学习它,所以就不多说了,在今后的博文中再继续写一些。推荐一下一个博客,Laravel 4 系列入门教程【最适合中国人的Laravel教程】 很好,很强大。


3.PHP框架在进入PHP7时代后的前景

众所周知,虽然大部分PHP网站还停留在5时代,但PHP7时代已经到来。而且PHP7相比PHP5效率提升非常之大,达到了1倍。可以说今后很多大型PHP网站都会进化为PHP7,大部分框架也会根据PHP7的特性进行改进,composer会变成一个PHP利器,因为他已经构建了一个PHP生态系统。


2016-08-06 23:20
我的第一篇博文
By ChenJR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值