Zephir--最簡單的php擴展開發工具

cey6 9年前發布 | 28K 次閱讀 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擴展變得非常的簡單。

官網: http://www.zephir-lang.com/

官方的安裝教程: http://www.zephir-lang.com/welcome.html

ubuntu下需要安裝相關的依賴

$ 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!