国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP7擴展開發之hello word實現方法詳解

PHP7擴展開發之hello word實現方法詳解

2019-10-25 13:06信海龍 PHP教程

這篇文章主要介紹了PHP7擴展開發之hello word實現方法,結合實例形式分析了php7擴展開發的具體步驟與相關操作技巧,涉及針對php底層源碼的修改與編譯,需要的朋友可以參考下

本文實例講述了PHP7擴展開發之hello word實現方法。分享給大家供大家參考,具體如下:

這里是以PHP7作為基礎,講解如何從零開始創建一個PHP擴展。本文主要講解創建一個擴展的基本步驟都有哪些。示例中,我們將實現如下功能:

  1. <?php 
  2. echo say(); 
  3. ?> 

輸出內容:

  1. $ php ./test.php 
  2. $ hello word 

在擴展中實現一個say方法,調用say方法后,輸出 hello word。

第一步:生成代碼

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

  1. $ cd php_src/ext/ 
  2. $ ./ext_skel --extname=say 

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

第二步,修改config.m4配置文件

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

  1. $ cd ./say 
  2. $ vim ./config.m4 

打開,config.m4文件后,你會發現這樣一段文字。

  1. dnl If your extension references something external, use with
  2. dnl PHP_ARG_WITH(say, for say support, 
  3. dnl Make sure that the comment is aligned: 
  4. dnl [ --with-say       Include say support]) 
  5. dnl Otherwise use enable: 
  6. dnl PHP_ARG_ENABLE(say, whether to enable say support, 
  7. dnl Make sure that the comment is aligned: 
  8. dnl [ --enable-say      Enable say support]) 

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

  1. dnl If your extension references something external, use with
  2.  dnl PHP_ARG_WITH(say, for say support, 
  3.  dnl Make sure that the comment is aligned: 
  4.  dnl [ --with-say       Include say support]) 
  5.  dnl Otherwise use enable: 
  6.  PHP_ARG_ENABLE(say, whether to enable say support, 
  7.  Make sure that the comment is aligned: 
  8.  [ --enable-say      Enable say support]) 

第三步,代碼實現

修改say.c文件。實現say方法。

找到PHP_FUNCTION(confirm_say_compiled),在其上面增加如下代碼:

  1. PHP_FUNCTION(say) 
  2.     zend_string *strg; 
  3.     strg = strpprintf(0, "hello word"); 
  4.     RETURN_STR(strg); 

找到PHP_FE(confirm_say_compiled, 在上面增加如下代碼:

  1. PHP_FE(say, NULL) 

修改后的代碼如下:

  1. const zend_function_entry say_functions[] = { 
  2.    PHP_FE(say, NULL)    /* For testing, remove later. */ 
  3.    PHP_FE(confirm_say_compiled,  NULL)    /* For testing, remove later. */ 
  4.    PHP_FE_END /* Must be the last line in say_functions[] */ 
  5.  }; 
  6.  /* }}} */ 

第四步,編譯安裝

編譯擴展的步驟如下:

  1. $ phpize 
  2. $ ./configure 
  3. $ make && make install 

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

  1. [say] 
  2. extension = say.so 

然后執行,php -m命令。在輸出的內容中,你會看到say字樣。

第五步,調用測試

自己寫一個腳本,調用say方法。看輸出的內容是否符合預期。

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久夜精| 蜜桃av噜噜一区二区三区小说 | 福利视频网址导航 | 国产欧美日韩在线 | 欧美一级片在线 | 91精品一区二区三区久久久久久 | 黄色大片在线播放 | 91嫩草香蕉 | 亚洲久久久久 | 香蕉成人啪国产精品视频综合网 | 黄色一级毛片在线观看 | 久久人人爽人人爽人人片亚洲 | 久久综合激情 | 超碰在线人人草 | 亚洲一区二区三区在线免费观看 | 午夜激情影院 | 国产成人一区二区三区 | 精品久久久久久久久久久久 | 久久人人av | 精品国产精品一区二区夜夜嗨 | 亚洲精品视频免费在线观看 | 日韩精品成人 | 大毛片| 黄色av免费在线 | 日本午夜视频 | 亚洲精品久久 | 国产又色又爽又黄又免费 | 一区视频在线 | 日韩在线播放视频 | 欧美第5页 | 夜夜爽av福利精品导航 | 欧美一区二区在线刺激视频 | 国产精品免费久久久久久久久久中文 | 91精品欧美久久久久久动漫 | 国产在线精品一区 | 免费av在线 | 欧美日韩视频在线 | 久久亚洲综合 | 色啪网站 | 精品国产一区二区 | a网站在线观看 |