图虫之前是用Zend Framework开发的,全面用 Zend Framework重构那还是2008年的事情,期间一路跟着ZendFramework升级版本,从1.5一路跟到1.9,但是由于Zend Framework 2.0的差异太大,所以没有迁移到2.0。
转眼6年过去了,PHP世界发生了翻天覆地的变化,PHP 5.3以后引入的命名空间和trait和函数闭包等新特性,都彻底改变了框架的设计思路。PHP-FIG提出的PSR-0,PSR-4的策略,以及Packagist带来的包管理机制,极大地提升了PHP社区的活力。
新的PHP框架如雨后春笋般冒出来,尤其是Laravel这个号称给web艺术家设计的框架,简单看了几眼sample code,ORM的设计和我自己写的MyPDO如出一辙,大量的使用静态方法,避免不必要的对象实例化,它的代码风格简直深得我心。
但是Laravel和ZendFramework、django、rails一样,都是大而全的框架,框架内互相耦合了大量组件。对于一些轻量的API项目,其实我们根本用不着那些复杂的功能。于是,又有很多类似于express、web.py、flask、bottle的微框架应运而生。
到底用什么框架呢?简单整理对比一下几个流行框架:
1. 微框架——把文件層先脫離出來就是大一步了
Slim , lumen,microMVC , flight , Silex 等,基本只做路由绑定的工作,其他功能一概没有。
Slim相对比较流行,flight和Silex也还不错。这类项目的开发一般不很活跃,因为实在没什么事情可以做。
这类微框架适合做一些功能简单的小项目,代码量少,能够达到不错的性能。
2. 功能齊全大庫系——把輪子通通拿來給本大爺用
Yii, CI, Cake, ThinkPHP,早期框架基本都属于这一类,在没有包管理的时代,引入独立组件是一个很麻烦的事情,所以这些框架一股脑把路由、视图、ORM、Acl、Pagination、Log等等统统自己做了一遍。
3. 安裝擴展系——不能高級一點嗎?
Laravel, ZF, Symfony,使用了大量PHP的高级特性。能体验到动态语言的强大魅力。
4. 用C写的PHP扩展系——速度最實際
Yaf, Phalcon
Phalcon 由于是一帮老外写的,开发者众多,社区完善,因此功能比较完善,各方面支持比较好。
Yaf毕竟是鸟哥一人在维护,而且鸟哥也太忙了,Yaf功能有限是必然的。
Phalcon/Yaf 适合做对性能要求很高的API项目。