鸟哥已经把 Zend Framework 的请求控制部分改写成 PHP 扩展了,叫 Yaf Framework。还是应用程序级单例的,只需要启动 PHP 时初始化一次,以后每次请求都处理的很轻松。
将Kohana框架编写为PHP扩展之狂想
一年前写过《Ubuntu下用C编写PHP扩展全程实录》,有时候无聊,为了追求PHP性能的极限,就会做些比较疯狂的事情,比如现在我就想把Kohana框架改为PHP扩展。
PHP的框架很多,比如Zend Framework、Symfony、YII,大家都是各有所爱。
我觉得Symfony还不错,就是性能差点
,所以性能为王的前提下,我选择Kohana。
废话不多说,先小试牛刀一把。
我想只要把system/classes/kohana目录下的类全部用扩展实现,效率会高上一点吧![]()
这里跟《Ubuntu下用C编写PHP扩展全程实录》有点区别的地方是要实现类,而不是一个函数,大家可以去看下如何实现类扩展。
例如我们要实现Kohana_Arr类
cd ./php-5.3.5/ext
sudo ./ext_skel --extname=kohana
sudo vi kohana/config.m4
去除注释dnl:
PHP_ARG_ENABLE(kohana, whether to enable kohana support,
Make sure that the comment is aligned:
[ --enable-kohana Enable kohana support])
php_kohana.h 加入添加声明:
PHP_METHOD(Kohana_Arr, is_assoc);
PHP_METHOD(Kohana_Arr, is_array);
PHP_METHOD(Kohana_Arr, path);
PHP_METHOD(Kohana_Arr, set_path);
PHP_METHOD(Kohana_Arr, range);
PHP_METHOD(Kohana_Arr, get);
PHP_METHOD(Kohana_Arr, extract);
PHP_METHOD(Kohana_Arr, pluck);
PHP_METHOD(Kohana_Arr, unshift);
PHP_METHOD(Kohana_Arr, map);
PHP_METHOD(Kohana_Arr, merge);
PHP_METHOD(Kohana_Arr, overwrite);
PHP_METHOD(Kohana_Arr, callback);
PHP_METHOD(Kohana_Arr, flatten);
然后在kohana.c里书写相关定义就可以了。
鸟哥已经把 Zend Framework 的请求控制部分改写成 PHP 扩展了,叫 Yaf Framework。还是应用程序级单例的,只需要启动 PHP 时初始化一次,以后每次请求都处理的很轻松。
发表讨论