參考: 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.gitcd json-c./autogen.sh./configuremakemake installre2c安装:
现在最新的版本是: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.gztar zxf re2c-0.13.6.tar.gzcd re2c-0.13.6./configuremakemake installzephir 的安装
git clone https://github.com/phalcon/zephir.gitcp -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 .bashrczephir 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 能夠被許多人重視,會越來越完備的。甚至會有自動轉換的程式。