php 擴展開發

構建PHP擴展 包括一下4個步驟php

生成框架-》實現函數-》構建-》執行函數框架

構建一個擴展,須要的全部東西只有兩樣:PHP源碼和PHP的可執行程序。所以,咱們須要先準備好PHP源碼和PHP運行環境。

生成框架函數

框架,即PHP擴展的框架,也稱骨架。PHP提供了生成框架的工具,十分易用。
生成框架的步驟以下:
     cd php源碼根目錄
     cd extphp-fpm

     php ext_skel.php --ext  'goodbyeearth'
     ext_skel是PHP提供的生成框架的工具,--ext 的值是擴展的名稱。該命令的結果是在ext目錄下建立了一個goodbyeearth目錄,擴展框架的全部文件,都在這個目錄下面。工具

實現函數spa


  咱們實現函數bye(),該函數沒有參數和返回值,只打印一行字符串Goodbye Earth。字符串

  實現函數須要在2個文件中添加代碼,文件在goodbyeearth目錄下。

  在php_goodbyeearth.h中的PHP_FUNCTION(confirm_goodbyeearth_compiled);下一行添加:
  PHP_FUNCTION(bye);

  在goodbyeearth.c中添加2段代碼:
  zend_function_entry goodbyeearth_functions[] = {
    PHP_FE(confirm_goodbyeearth_compiled,   NULL)
    {NULL, NULL, NULL}
  };
  在以上代碼段中添加:
  zend_function_entry goodbyeearth_functions[] = {
  PHP_FE(confirm_goodbyeearth_compiled,   NULL)          PHP_FE(bye, NULL)        
    {NULL, NULL, NULL}
  };
  在文件末尾編寫函數的實現:
  PHP_FUNCTION(bye)
  {
      php_printf("Goodbye Earth!\n");
  }

構建源碼


  構建是編譯擴展的過程,包括如下步驟:
     cd goodbyeearth
     修改構建配置文件config.m4
 it

  將SEARCH_PATH的第3個路徑改成擴展所在的路徑,SEARCH_FOR的值是php_goodbyeearth.h
       php環境目錄/bin/phpize
       ./configure --with-php-config= php環境目錄/bin/php-config --enable-goodbyeearth
       make
       make install
  make會編譯出goodbyeearth.so到goodbyeearth/modules下,make install會將goodbyeearth.so拷貝到php環境的擴展路徑下,好比php環境目錄/ext下。io


執行函數

  在php.ini中添加extension=goodbyeearth.so,重啓php-fpm.

  編寫php腳本,好比test.php,內容以下:  <?php  echo bye();  運行php test.php,將輸出:  Goodbye Earth!  則擴展裏的函數bye()成功執行。

相關文章
相關標籤/搜索