久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > PHP7擴展開發方法詳解

PHP7擴展開發方法詳解

發布人:only1 時間:2020-10-10 來源:工程師 發布文章

  今天扣丁學堂給大家介紹一下關于從零開始創建一個PHP擴展,開發環境為php7,實現一個自定義函數say_hi,調用此函數返回HelloWorld。下面我們一起來看一下吧。

  一生成代碼


  PHP提供了生成基本代碼的工具ext_skel,這個工具在PHP源代碼的./ext目錄下


  $cdphp_src/ext/


  $./ext_skel--extname=say_hi


  extname參數的值就是擴展名稱,執行ext_skel命令后,會在當前目錄下會生成一個與擴展名一樣的目錄。


  二修改config.m4配置文件


  config.m4的作用是配合phpize工具生成configure文件(onfigure文件是用于檢測擴展編譯運行所需的環境是否滿足),現在開始修改config.m4文件


  $cd./say_hi


  $vim./config.m4


  config.m4文件有這樣一段文字


  dnlIfyourextensionreferencessomethingexternal,usewith:


  dnlPHP_ARG_WITH(say,forsaysupport,


  dnlMakesurethatthecommentisaligned:


  dnl[--with-sayIncludesaysupport])


  dnlOtherwiseuseenable:


  dnlPHP_ARG_ENABLE(say,whethertoenablesaysupport,


  dnlMakesurethatthecommentisaligned:


  dnl[--enable-sayEnablesaysupport])


  其中,dnl是注釋符號,上面的代碼意思是如果你所編寫的擴展依賴其它的擴展或者lib庫,需要去掉PHP_ARG_WITH相關代碼的注釋。否則,去掉PHP_ARG_ENABLE相關代碼段的注釋。我們編寫的擴展不需要依賴其他的擴展和lib庫。因此,我們去掉PHP_ARG_ENABLE前面的注釋。去掉注釋后的代碼如下:


  dnlIfyourextensionreferencessomethingexternal,usewith:


  dnlPHP_ARG_WITH(say,forsaysupport,


  dnlMakesurethatthecommentisaligned:


  dnl[--with-sayIncludesaysupport])


  dnlOtherwiseuseenable:


  PHP_ARG_ENABLE(say,whethertoenablesaysupport,


  Makesurethatthecommentisaligned:


  [--enable-sayEnablesaysupport])


  三實現擴展方法


  修改say_hi.c文件來實現say_hi方法,找到PHP_FUNCTION(confirm_say_hi_compiled),在其上面增加如下代碼:


  PHP_FUNCTION(say_hi)


  {


  zend_string*strg;


  strg=strpprintf(0,"HelloWorld");


  RETURN_STR(strg);


  }


  找到PHP_FE(confirm_say_hi_compiled,NULL),在上面增加如下代碼:


  PHP_FE(say_hi,NULL)


  修改后的代碼如下:


  constzend_function_entrysay_functions[]={


  PHP_FE(say_hi,NULL)


  PHP_FE(confirm_say_hi_compiled,NULL)/*Fortesting,removelater.*/


  PHP_FE_END/*Mustbethelastlineinsay_functions[]*/


  };


  /*}}}*/


  四編譯安裝寫好的擴展


  $phpize


  $./configure


  $make&&makeinstall


  修改php.ini文件,增加如下代碼:


  extension=say_hi.so


  然后執行php-m命令查看已安裝擴展,在輸出的內容中如果有say_hi則說明安裝成功


  五測試


  寫一個腳本test.php,假如放在home目錄,內容如下:


  echosay_hi();


  然后執行:


  php~/test.php


  輸出HelloWorld,擴展編寫成功


  以上就是關于扣丁學堂PHP培訓之PHP7擴展開發方法的詳細介紹,最后想要了解更多關于PHP開發發展前景趨勢,請關注扣丁學堂官網、微信等平臺,扣丁學堂IT職業在線學習教育平臺為您提供權威的PHP視頻教程系統,通過千鋒扣丁學堂金牌講師在線錄制的一套PHP視頻教程課程,讓你快速掌握PHP從入門到精通開發實戰技能。扣丁學堂PHP技術交流群:374332265。

*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞:

相關推薦

技術專區

關閉