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 能夠被許多人重視,會越來越完備的。甚至會有自動轉換的程式。