成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不要再天天寫表單了,淘寶大牛教你零基礎寫PHP擴展

開發 后端 企業動態
信海龍老師于2013年加入阿里巴巴,擁有十年互聯網開發經驗。為幫助寫PHP的小伙伴提高提高業務能力,特意在知加創建圈子『零基礎學習PHP擴展開發』,用于與PHP擴展開發初學者分享、交流。

很多PHPer天天寫表單,不知如何提升。如果你已經熟悉了數據集和服務器端的優化,不妨試試通過PHP擴展向系統層進軍。當原有的PHP代碼實現出現性能瓶頸,可以考慮通過PHP擴展實現;純PHP代碼無法實現的功能,可以考慮通過PHP擴展調用其他相關庫實現。既能提升業務能力,又能幫助大家逐漸通過擴展了解PHP 源代碼層的運作機制。 

[[186052]]

擴展入門較難,這里特別推薦淘寶大牛信海龍老師的入門課程,手把手教會你只要一塊錢。 

我們精選出文集中的第二章內容,以供免費試讀。

(如果你不喜歡付費課程,也可以通過PHP手冊第二部分進行學習:http://php.net/manual/zh/internals2.structure.php) 

 

從hello world開始(試讀) 

以下內容以PHP7作為基礎,講解如何從零開始創建一個PHP擴展。示例中,我們將實現如下功能:

  1. <?php 
  2. function say() { 
  3.     return "hello word"
  4. }
  5. echo say(); 
  6. ?> 

 輸出內容:

  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.  
  3. dnl PHP_ARG_WITH(say, for say support, 
  4. dnl Make sure that the comment is aligned: 
  5. dnl [  --with-say             Include say support]) 
  6.  
  7. dnl Otherwise use enable: 
  8.   
  9. dnl PHP_ARG_ENABLE(say, whether to enable say support, 
  10. dnl Make sure that the comment is aligned: 
  11. 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.  
  3.  dnl PHP_ARG_WITH(say, for say support, 
  4.  dnl Make sure that the comment is aligned: 
  5.  dnl [  --with-say             Include say support]) 
  6.  
  7.  dnl Otherwise use enable: 
  8.  
  9.  PHP_ARG_ENABLE(say, whether to enable say support, 
  10.  Make sure that the comment is aligned: 
  11.  [  --enable-say           Enable say support]) 

第三步:代碼實現

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

  1. PHP_FUNCTION(say) 
  2.         zend_string *strg;        strg = strpprintf(0, "hello word"); 
  3.         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方法??摧敵龅膬热菔欠穹项A期。

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

輸出內容:

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

 想深入學習PHP擴展的小伙伴,歡迎加入信海龍老師的特價付費圈子:零基礎學習PHP擴展開發 

責任編輯:知加 來源: 知加
相關推薦

2017-07-03 15:04:41

2018-06-13 10:23:27

編程語言Python數據庫

2017-08-22 21:01:40

2024-05-31 08:53:56

2019-11-18 10:16:37

工程師開發網絡

2019-11-18 10:05:43

程序員技能開發者

2015-11-12 09:57:57

前端零基礎學習

2020-11-23 09:46:18

Java方法權限

2017-09-21 15:31:49

2022-03-15 09:31:17

ESLint工作原理前端

2016-11-25 13:05:18

2012-02-22 10:33:36

Wi-Fi

2022-04-13 07:51:49

API網關系統

2018-10-17 11:20:55

SQL數據庫程序員

2013-08-19 11:03:21

微軟谷歌

2020-04-09 14:02:33

NginxHttps前端

2021-03-23 17:21:48

Java編程開發

2020-11-20 09:36:43

Java對象

2019-11-11 14:09:17

Swift數據科學語言

2021-01-13 14:55:54

JavaPython開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产99久久 | 中文字幕91av| 97操操 | 欧美二区在线 | 成人一区av| 亚洲色欲色欲www | 欧美国产精品一区二区三区 | 欲色av | 久久精品成人 | 国产欧美日韩精品在线观看 | 羞羞的视频免费在线观看 | 亚洲国产精品91 | 91资源在线 | 国产精品欧美一区二区三区不卡 | 久久这里只有精品首页 | 天天操天天干天天透 | 国产精品黄色 | 国产精品123区 | 欧美日韩精品一区二区三区视频 | 日本不卡一区二区三区在线观看 | 天天噜天天干 | 欧美日韩亚洲一区二区 | 怡红院成人在线视频 | 亚洲风情在线观看 | 成人做爰www免费看视频网站 | 国产电影一区 | 免费黄色的网站 | 国产高清免费视频 | 日日碰碰 | 成人免费视频在线观看 | 国产三级电影网站 | 成人免费观看视频 | 天天视频一区二区三区 | 久久综合久久综合久久 | 久久九七| 亚洲精品一区二区三区四区高清 | 久久精品av麻豆的观看方式 | 日本精品一区二区三区视频 | 久久久国产一区 | 91在线精品视频 | 97在线超碰 |