APP创业项目-PHP框架选择

喜欢这篇文章吗?分享给你的朋友吧~ 

本文继《APP创业项目-后端语言选择》之后讨论PHP开发框架选择问题。PHP从诞生至今出现了数以百计的大小框架,有人说PHP生来就是反框架的自由语言,框架的使用反而会降低PHP的性能。确实,引入复杂的架构带来了性能的降低,但我认为从团队合作的角度来说,基于统一的框架开发有助于合作与未来扩展。框架的优与劣关系到程序的性能,也关系到开发的效率,性能与开发效率很多时候在项目开发中是一对矛盾体,正如C与JAVA,一个以性能著称、一个以开发效率而流行。在矛盾中寻找平衡从来没有对于错。

PHP的众多框架中,也存在性能与效率的平衡问题,名声在外的Laravel被称为最优雅的框架,Yaf、Phalcon被誉为最快的框架,还有Yii、Codeigniter、Zend Framework等知名框架。并不是说优雅就不快或者快就不优雅,这只是一个相对的评价。那么我们该如何选择框架?

第一、选择的依据是什么?是性能还是效率?

虽然Laravel官网首页大大的字“Love beautiful code? We do too.”表明它对优雅的情怀,这并不影响Phalcon、Yii、Zend Framework的优雅,在开发效率上也并没有比Phalcon有明显地提升,但是不同的框架在性能上的差距还是比较明显的。参见性能比较,该网页从JSON、单查询、多查询等角度进行了框架性能比较,除了PHP原生之外,Phalcon-micro、Yaf、Phalcon都表现出数倍于Laravel的性能。

第二、我们需要框架做到多少,是一个全包保姆型的,还是一个极简爸爸型的?

全包保姆型框架像保姆一样帮你考虑得细致周到,照顾得你基本上不能独立生活。这类框架尽可能考虑到WEB开发的各个方面,框架对开发模式限制较多,开发者最好遵循其限制,较小的项目会显得高效轻松,随着开发的深入,会渐渐在遵循和突破之间进退两难。

极简爸爸型框架像爸爸一样给你提供大方向的导引,小细节充分给你自由。这类框架只实现了框架该实现Route、MVC、Request、Response、AutoLoader,而ORM、Cache、ACL等重要功能都由开发者自由实现。

Phalcon、Laravel在架构上都解耦得很好,他们既可以当做保姆型也可以当做爸爸型。Phalcon同时还提供了Phalcon-micro简化框架以进一步提升性能。

下面简要对Phalcon、Yaf、Laravel分析。

Phalcon

基于Zephir语言开发编译为PHP的C语言扩展,专为高性能而生。

Phalcon团队提供的Zephir语言,是一个与PHP高度相似的语言,专用于编写PHP扩展,开发者可基于Zephir开发项目相关的PHP扩展。例如数据库连接组件,PHP项目连接数据库时需要将用户名和密码写入配置文件,获取到配置文件即可获取到账号密码。如果将数据库连接部分编译为C扩展,可以一定程度上保证用户名和密码的安全。对于团队公用且定型的核心组件,可以编译为C扩展,开发人员基于此开发,既可以提升性能,又可以保护核心代码。对于商业软件,全部编译为C扩展也未尝不可。

Phalcon核心基于依赖注入思想,插件和中间件机制基于事件驱动模式。依赖注入实现了运行时的资源管理,事件驱动编程为开发者提供了框架扩展可能。

Phalcon-micro便于实现超轻量级应用开发。

Phalcon代码组织与Zend Framework高度相似,便于上手。

由于Phalcon框架是编译好PHP扩展,所以无法在框架内断点调试。新手开发时,对框架不熟悉,编写代码出现未知问题时,要在框架内进行调试,只有两种途径,一是侦听框架内事件,判断业务逻辑,但是这种方法受限于事件抛出位置,且可观察的数据有限。二是借助Zephir语言修改框架源代码后重新编译,这是一件比较耗时的事情。

Yaf

国内开发,百度的多数项目基于它开发。与Phalcon一样由C编写后编译为PHP扩展,性能与Phalcon-micro相当。它是一个超轻量级的框架,除了核心MVC之外,都交给开发者自己实现,适合经验充分的开发人员用于大型项目开发,开发者社区几乎没有。它与Phalcon一样无法进行框架内调试。

Laravel

GitHub上最火的PHP框架,几倍于Phalcon的开发者活跃度,以美丽的代码著称。项目代码追求艺术性,就连命令行都用artisan命名。框架充分解耦的同时提供了丰富的组件,开发风格与Python的Django框架很相似。但是代码风格过于标新立异,例如核心代码一级包名为Illuminate,用Eloquent表示ORM,有过PHP其他框架经验者会显得陌生。

 

总结

本文分析了选择框架的依据,比较了Phalcon、Yaf和Laravel三个框架的优缺点。下面给出笔者的建议,如果你的团队对C扩展提升性能没有太大兴趣,开发经验尚不充分,建议选择Laravel;如果你的团队对设计模式有较深理解,对PHP框架源代码有一定的研究,有能力修改和扩展框架源代码,建议选择Phalcon,有过Zend Framework框架经验更应该选择Phalcon;如果你想学习从零开始编写一个属于自己的框架,可以考虑从使用Yaf开始。Yii、Codeigniter、ThinkPHP等框架未作一一分析,并不影响它们作为一个优秀的框架存在。

声明:本文谢绝转载。

版权声明:本博客所有内容,文尾声明谢绝转载的文章禁止转载,未声明谢绝转载的文章,遵循 CC BY-NC-ND 协议,分享-署名-非商业-禁止演绎。
原文链接:APP创业项目-PHP框架选择
来源站点:ComingX

0 Responses to “APP创业项目-PHP框架选择”


  • No Comments

Leave a Reply

使用新浪微博登陆