Zephir--最簡單的php擴展開發工具
原文</i> http://segmentfault.com/a/1190000002812601
更多關于PHP的技術文章 http://www.codefrom.com/
php的擴展是用c語言編寫,Zend是語言引擎,PHP內核。在實際編寫php擴展的時候,需要使用大量的Zend Api,雖然運行效率高,但是其實難度也比較大。見: http://php.net/manual/zh/internals2.ze1.zendapi.php
Zephir提供了一種類似php的高級語言語法的方式,來自動生成擴展的c語言代碼,使編寫php擴展變得非常的簡單。
$ sudo apt-get update $ sudo apt-get install git gcc make re2c php5 php5-json php5-dev libpcre3-dev
當然別的平臺根據實際提示,安裝對應的程序即可
$ git clone https://github.com/phalcon/zephir $ cd zephir $ ./install-json $ ./install -c
測試安裝是否成功
$ zephir help
使用示例如下:
$ 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的內置函數。然后運行
$ 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擴展的編輯方法也是可以滴。
本文由用戶 cey6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!