Zephir--最简单的php扩展开发工具(chpjmb的博客)
php的擴(kuò)展是用c語言編寫,Zend是語言引擎,PHP內(nèi)核。在實(shí)際編寫php擴(kuò)展的時(shí)候,需要使用大量的Zend Api,雖然運(yùn)行效率高,但是其實(shí)難度也比較大。見:http://php.net/manual/zh/internals2.ze1.zendapi.php
Zephir提供了一種類似php的高級(jí)語言語法的方式,來自動(dòng)生成擴(kuò)展的c語言代碼,使編寫php擴(kuò)展變得非常的簡單。
官網(wǎng):http://www.zephir-lang.com/
官方的安裝教程:http://www.zephir-lang.com/welcome.html
ubuntu下需要安裝相關(guān)的依賴
$ sudo apt-get update$ sudo apt-get install git gcc make re2c php5 php5-json php5-dev libpcre3-dev
登錄后復(fù)制
當(dāng)然別的平臺(tái)根據(jù)實(shí)際提示,安裝對(duì)應(yīng)的程序即可
$ git clone https://github.com/phalcon/zephir$ cd zephir$ ./install-json$ ./install -c
登錄后復(fù)制
測(cè)試安裝是否成功
$ zephir help
登錄后復(fù)制
使用示例如下:
$ zephir init utils
登錄后復(fù)制
會(huì)在當(dāng)前目錄下生成
ext/ utils/ config.json
登錄后復(fù)制
然后編輯utils子目錄下的greeting.zep 內(nèi)容如下:
namespace Utils; class Greeting { public static function say() { var a = "hello world"; echo strtoupper(a); } }
登錄后復(fù)制
這里的namespace是必須添加的,輸出大寫的"hello,world"。可以直接使用php的內(nèi)置函數(shù)。
然后運(yùn)行
$ zephir build
登錄后復(fù)制
然后就會(huì)在擴(kuò)展目錄下生成utils.so,修改php.ini添加添加該擴(kuò)展。調(diào)用方法:
<?phpecho Utils\Greeting::say(), "\n";
登錄后復(fù)制
擴(kuò)展閱讀:
zephir生成的c語言文件默認(rèn)在/ext/utils/greeting.zep.c,核心內(nèi)容如下:
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();}
登錄后復(fù)制
可以發(fā)現(xiàn)zephir一方面直接zend api 如:zend_print_zval。另一方面封裝了zend api,如:zephir_fast_strtoupper 。直接修改該文件的c代碼,使用原php擴(kuò)展的編輯方法也是可以滴。
總結(jié)
以上是生活随笔為你收集整理的Zephir--最简单的php扩展开发工具(chpjmb的博客)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java spring redis_sp
- 下一篇: 如何解决webstorm创建react失