更多關於PHP的技術文章http://www.codefrom.com/php
php的擴展是用c語言編寫,Zend是語言引擎,PHP內核。在實際編寫php擴展的時候,須要使用大量的Zend Api,雖然運行效率高,可是其實難度也比較大。見:http://php.net/manual/zh/internals2.ze1.zendapi.phphtml
Zephir提供了一種相似php的高級語言語法的方式,來自動生成擴展的c語言代碼,使編寫php擴展變得很是的簡單。git
官網:http://www.zephir-lang.com/
官方的安裝教程:http://www.zephir-lang.com/welcome.html
ubuntu下須要安裝相關的依賴github
$ sudo apt-get update $ sudo apt-get install git gcc make re2c php5 php5-json php5-dev libpcre3-dev
固然別的平臺根據實際提示,安裝對應的程序便可json
$ git clone https://github.com/phalcon/zephir $ cd zephir $ ./install-json $ ./install -c
測試安裝是否成功ubuntu
$ zephir help
使用示例以下:api
$ zephir init utils
會在當前目錄下生成函數
ext/ utils/ config.json
而後編輯utils子目錄下的greeting.zep 內容以下:測試
namespace Utils; class Greeting { public static function say() { var a = "hello world"; echo strtoupper(a); } }
這裏的namespace是必須添加的,輸出大寫的"hello,world"。能夠直接使用php的內置函數。
而後運行ui
$ zephir build
而後就會在擴展目錄下生成utils.so,修改php.ini添加添加該擴展。調用方法:
<?php echo Utils\Greeting::say(), "\n";
擴展閱讀:
zephir生成的c語言文件默認在/ext/utils/greeting.zep.c,核心內容以下:
PHP_METHOD(Utils_Greeting, say) { zval *a, *_0; ZEPHIR_MM_GROW(); ZEPHIR_INIT_VAR(a); ZVAL_STRING(a, "hello world", 1); ZEPHIR_INIT_VAR(_0); zephir_fast_strtoupper(_0, a); zend_print_zval(_0, 0); ZEPHIR_MM_RESTORE(); }
能夠發現zephir一方面直接zend api 如:zend_print_zval。另外一方面封裝了zend api,如:zephir_fast_strtoupper 。直接修改該文件的c代碼,使用原php擴展的編輯方法也是能夠滴。