激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

服務(wù)器之家 - 編程語言 - PHP教程 - PHP7擴(kuò)展開發(fā)之hello word實現(xiàn)方法詳解

PHP7擴(kuò)展開發(fā)之hello word實現(xiàn)方法詳解

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

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

本文實例講述了PHP7擴(kuò)展開發(fā)之hello word實現(xiàn)方法。分享給大家供大家參考,具體如下:

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

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

輸出內(nèi)容:

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

在擴(kuò)展中實現(xiàn)一個say方法,調(diào)用say方法后,輸出 hello word。

第一步:生成代碼

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

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

extname參數(shù)的值就是擴(kuò)展名稱。執(zhí)行ext_skel命令后,這樣在當(dāng)前目錄下會生成一個與擴(kuò)展名一樣的目錄。

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

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

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

打開,config.m4文件后,你會發(fā)現(xiàn)這樣一段文字。

  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 是注釋符號。上面的代碼說,如果你所編寫的擴(kuò)展如果依賴其它的擴(kuò)展或者lib庫,需要去掉PHP_ARG_WITH相關(guān)代碼的注釋。否則,去掉PHP_ARG_ENABLE相關(guān)代碼段的注釋。我們編寫的擴(kuò)展不需要依賴其他的擴(kuò)展和lib庫。因此,我們?nèi)サ鬚HP_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]) 

第三步,代碼實現(xiàn)

修改say.c文件。實現(xiàn)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.  /* }}} */ 

第四步,編譯安裝

編譯擴(kuò)展的步驟如下:

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

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

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

然后執(zhí)行,php -m命令。在輸出的內(nèi)容中,你會看到say字樣。

第五步,調(diào)用測試

自己寫一個腳本,調(diào)用say方法。看輸出的內(nèi)容是否符合預(yù)期。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美hdfree性xxxx | 久草成人在线观看 | 欧美a级在线免费观看 | 亚洲成人精品在线 | 日本xxxx视频| 久久久久免费电影 | 欧美成人三级视频 | 亚洲第五色综合网 | 97视频| 国产午夜亚洲精品 | 欧美人与牲禽动交精品一区 | 中国女警察一级毛片视频 | 黄色男女视频 | 亚洲第一成av人网站懂色 | 欧美色视| 亚洲欧美国产高清va在线播放 | 国产精品刺激对白麻豆99 | 成人毛片视频免费看 | 99热1| 在线成人免费网站 | 日韩视频一区二区三区在线观看 | 亚洲αv | 欧美一区中文字幕 | 午夜久久久精品一区二区三区 | 懂色av懂色aⅴ精彩av | 自偷自偷久产久精九国品在线 | 91麻豆精品国产91久久久更新资源速度超快 | 水多视频在线观看 | 真人一级毛片免费 | 国产亚洲精品久久久久久久久久 | 免费黄色短视频网站 | 91精品国产乱码久 | 色99久久| 97伦理| 欧美成人做爰高潮片免费视频 | 一区二区免费网站 | 欧美视频在线观看一区 | 国产乱弄| 玖草| 欧美一级毛片一级毛片 | 精品一区二区6 |