Zephir 試用
參考: centos 6 下,zephir的安装和使用, 以及 Converting the Symfony Stopwatch Component from PHP to Zephir
一邊試,一邊要補裝所需的 package,會使用到的 package 列表如下
yum install wget git autoconf automake libtool gcc-c++
目前在 CentOS 6.5 只有 PHP 5.3,必須 Webtatic EL yum repository 安裝
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
然後安裝下列的 package
yum install php54w php54w-devel php54w-pear
然後,再用 pecl 安裝 json, 執行
pecl install json
接著手動安装兩個依赖的程式: json-c 及 re2c
json-c安装:
git clone https://github.com/json-c/json-c.git
cd json-c
./autogen.sh
./configure
make
make install
re2c安装:
现在最新的版本是:0.13.6
http://sourceforge.net/projects/re2c/files/re2c/0.13.6/
下载其中的tar.gz文件即可。 (不要下载.zip的文件)
cd ~
wget http://downloads.sourceforge.net/project/re2c/re2c/0.13.6/re2c-0.13.6.tar.gz
tar zxf re2c-0.13.6.tar.gz
cd re2c-0.13.6
./configure
make
make install
zephir 的安装
git clone https://github.com/phalcon/zephir.git
cp -R zephir /usr/local/lib64/
cd /usr/local/lib64/zephir
./install
設定 PATH,在任何地方都可以使用 zephir 命令
cd ~
vi .bashrc
#在最后一行添加:
export PATH=$PATH:/usr/local/lib64/zephir/bin
#保存
source .bashrc
zephir help
問題陳述:
(2014-03-04)
會想試 Zephir,是想把 Laravel 的一部分 core 用 Zephir 轉成 C 程式,看能否加快速度。
但在試的時候,發現它不支持所課的 Late Static Bindings,
例如,在 class 中定義 public static uri;
,echo self::uri;
可以接受,但是 echo static::uri;
會出現 Syntax error。在 Laravel 的 core 中,此種用法到處可見。所以,暫時擱下吧。
看起來,不只我想做這樣的事,這個專案 ZephirEvm,要用 Zephir 來實作 Zend\EventManager,也碰到類似的問題,停了下來。至於 Zephir 社群的回應是,Phalcon 沒用到,所以沒有打算把這功能加進去。
只有等吧,假如 Zephir 能夠被許多人重視,會越來越完備的。甚至會有自動轉換的程式。