PHP MVC & BPF
好久没有写技术文章,上段时间的工作比较忙,公司的需求分析快出来了,Brian 的合作项目 Deadline 一日一日逼近,压力啊压力啊...
又听到 PHPChina 的人在吵架了,CodeIgniter / Kohana, Yii, QeePHP / FleaPHP,到底谁是牛谁是猪,有必要争出个结果么,你自己想用啥就用啥,这才是 Open Source 的真谛啊,难怪 NINNY 姐这么无视那群家伙...
个人就 PHP MVC 框架而言,觉得兼容/功能跟性能总是成很大的反比。官方的 Zend Framework 吧,功能没得说,想到的基本都做到了,使用了很多 PHP5 的特性,但是也由于太多的继承与实现,库文件很多,磁盘载入和内存消耗也大,在普通服务器上表现并不佳;年初发现的 CI,当时说是最快的 MVC 框架,学习起来也很轻松,事实也是如此,经测试 CI Controller 运行 phpinfo() 大概是纯 PHP 性能的 1/8 (已经比 ZF 快不少),但功能就比较单一;前段时间又发现 Yii 和 QeePHP,Yii 不说了——鸡肋,QeePHP 有两个亮点:1. 国人开发 2. 据说是最快的 =.=,老实说 QeePHP 我没搞懂,第一次安装没成功,后来用它自带脚本算是配置好了,测试了一下是比 CI 略快,很少……但,好难学,又放弃了。
我并不是要说明哪个好哪个不好,开发框架本来就为其开发者所偏爱的方向,Zend Framework 是面向企业的,所以快慢不是关键因素;QeePHP 是 FleaPHP 过来的,人家 FleaPHPer 学起来就轻松了。
因此为了我自己偏爱的方向,八月份我也放弃了 CI,自己开发了一套 MVC 框架 (又重复造轮了 =.=),取名BPF (Bun PHP Framework)。为了减少学习难度,吸取了很多 CI 的优点,比如 Active Record 类,Action 的参数传递方式,也能见打到一些 Drupal 的影子,比如 Breadcrumb,Theme,global $user等。性能方面,开启 SESSION 和数据库连接后执行 phpinfo() 效率大概为纯 PHP 的 1/3,代价是削减了很多兼容性检测 (比如仅为 apache mod_rewrite 的路径检测),把核心模块耦合,减少了路由转发规则等,但是在我的大部分应用中,已经足够了。
