亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP7擴展開發教程之Hello World實現方法示例

2024-05-04 23:59:09
字體:
來源:轉載
供稿:網友

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

一、下載PHP源代碼

要開發PHP擴展,需要先下載PHP的源代碼,一方面是因為我們的擴展一般會用到PHP自身定義的函數和宏,另一方面我們可以利用官方提供的工具減少工作量。

我下載了PHP-7.0.2,地址是:http://cn2.php.net/get/php-7.0.2.tar.gz。

解壓源碼壓縮包, tar xzf php-7.0.2.tar.gz,我們現在只需要關注Zend和ext這兩個目錄。

Zend目錄里面包含了PHP的Zend Engine源代碼,有些函數和宏的定義我們需要在這里面簡單地看一下。

ext目錄里面包含了PHP原生的擴展,以及我們開發自己的擴展時可以利用的工具,Linux下使用ext_skel,Windows下使用ext_skel_win32.php

二、使用ext_skel工具

我們可以在ext目錄下看到所有的PHP原生擴展,其中包括了熟悉的curl,json,mbstring,simplexml,sockets等擴展,還有很多沒有用過甚至沒有聽說過的擴展,不用在意這些,我們先打開我們最熟悉的curl來看看,有config.m4配置文件,有php_curl.h,curl_file.c等源代碼,還有一些中間文件,最后還有一個tests目錄,里面放的curl擴展的單元測試。重點關注config.m4,php_curl.h,curl_file.c即可,最簡單的場景下這三個文件就是一個擴展的全部組成部分了。

打開隨便看一下,不算太復雜,但是自己寫一個類似的還是挺頭疼的,這時就需要用到我前面提到的ext_skel工具了。這個工具也在ext目錄下,我們執行一下,./ext_skel --help,可以看到若干參數,我們用到的只有--extname=module,這里填上自己開發的擴展名稱。想深入了解各個參數的作用可以看這里:http://php.net/manual/en/internals2.buildsys.skeleton.php

./ext_skel --extname=hello

ext目錄下多了一個hello目錄,我們后續的工作都在這個目錄下面,工具已經為我們自動生成了一些文件。

config.m4配置文件

開發PHP擴展,在寫C代碼之前,要先配置一下這里。我們打開可以看到詳細的注釋說明,dnl是注釋語法。

如果你的擴展用到了外部依賴,就配置--with-hello選項,否則配置--enable-hello選項,刪除這下面3行的del注釋

PHP_ARG_ENABLE(hello, whether to enable hello support,Make sure that the comment is aligned:[ --enable-hello      Enable hello support])

PHP_ARG_WITH和PHP_ARG_ENABLE這兩個宏用來配置configure選項,一個配置需要外部依賴的,另一個配置不需要外部依賴的

配置好的內容,在后面執行configure --help時可以看到。

php_hello.h頭文件

類似于C語音的頭文件,包含了一些自定義的結構和函數聲明,在這個demo中暫時不需要改動

hello.c代碼文件

真正的邏輯代碼都在這個文件中,后面會詳細介紹。

三、編寫代碼

好了,到這一步我們終于要開始寫代碼了,打開hello.c文件。

整個擴展的入口是zend_module_entry這個結構,具體的定義可以在Zend目錄下的zend_modules.h文件中看到,一共有十幾個屬性,快速跳過,我們暫時只需要"hello world"。

zend_module_entry hello_module_entry = {  STANDARD_MODULE_HEADER,  "hello",  hello_functions,  PHP_MINIT(hello),  PHP_MSHUTDOWN(hello),  PHP_RINIT(hello),    /* Replace with NULL if there's nothing to do at request start */  PHP_RSHUTDOWN(hello),  /* Replace with NULL if there's nothing to do at request end */  PHP_MINFO(hello),  PHP_HELLO_VERSION,  STANDARD_MODULE_PROPERTIES};

STANDARD_MODULE_HEADER幫我們實現了前面6個屬性

"hello"是擴展的名字

hello_functions是擴展包含的全部方法的集合

后面5個宏分別代表5個擴展特定方法

PHP_HELLO_VERSION是擴展的版本號,定義在頭文件中

STANDARD_MODULE_PROPERTIES幫我們實現了剩下的屬性

暫時都不需要修改,知道這是一個入口就行。順著這個入口,我們繼續看怎么給擴展添加方法,在hello_functions[]方法數組中已經有了一個示例方法confirm_hello_compiled,我們參考它寫我們的方法hello_world

const zend_function_entry hello_functions[] = {  PHP_FE(confirm_hello_compiled, NULL)    /* For testing, remove later. */  PHP_FE(hello_world, NULL)  PHP_FE_END /* Must be the last line in hello_functions[] */};

先在擴展的方法數組中添加上hello_world,然后再定義hello_world。找到confirm_hello_compiled方法定義的地方,在它下面依葫蘆畫瓢,php_printf是Zend Engine中的printf方法。

PHP_FUNCTION(hello_world){  php_printf("Hello World!/n");  RETURN_TRUE;}

四、編譯安裝

最后就是編譯安裝我們的擴展了,安裝過PHP擴展的同學不用看,沒有經驗的可以參考一下。

phpize

./configuremakemake install

現在PHP的擴展目錄中已經有了hello.so這個文件,在php.ini中添加上擴展的配置

extension = hello.so

五、測試

寫一個test.php方法,執行腳本就可以看到"Hello World!"

<?phphello_world();

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品在线一区| 日韩中文字在线| 久久国产精品久久久久久久久久| 国产精品日韩欧美大师| 亚洲黄色www| 欧美体内谢she精2性欧美| 高清日韩电视剧大全免费播放在线观看| 亚洲欧美精品一区二区| 亚洲第一精品久久忘忧草社区| 亚洲色图欧美制服丝袜另类第一页| 欧美一区二区视频97| 精品无码久久久久久国产| 久久久久久一区二区三区| 欧美日韩中文字幕在线视频| 成人激情视频网| 国产免费一区二区三区在线观看| 国产精品成人va在线观看| 亚洲精品一二区| 日韩网站免费观看| 一区二区三区四区视频| 97视频在线观看亚洲| 欧美亚洲在线播放| 欧美极品少妇与黑人| 色悠悠久久88| 神马久久久久久| 日韩亚洲综合在线| 91香蕉嫩草影院入口| 亚洲免费福利视频| 国产一区二区动漫| 欧美黑人性生活视频| 亚洲国产私拍精品国模在线观看| 久久久久久九九九| 欧美美女15p| 欧美视频在线免费看| 欧美精品videofree1080p| 色综合久久天天综线观看| 欧美激情一区二区三区久久久| 国产精品久久久久久久久久久久| 亚洲女人被黑人巨大进入al| 欧美在线一区二区三区四| 亚洲欧美日本另类| 日本高清不卡的在线| 亚洲激情视频在线观看| 国产午夜精品久久久| 欧洲午夜精品久久久| 日韩在线免费高清视频| 国产欧美精品在线播放| 精品国产一区二区在线| 欧美极品在线视频| 亚洲欧美国产精品久久久久久久| 欧美性理论片在线观看片免费| 久久久久久久999精品视频| 国产美女91呻吟求| 欧美国产日韩一区| 中文日韩在线视频| 97久久精品人搡人人玩| 91av视频在线观看| 欧美日韩国产精品一区| 日韩在线视频中文字幕| 亚洲欧美资源在线| 欧美日韩亚洲视频一区| 国产欧美在线看| 一区二区三区高清国产| 久久久伊人欧美| 国产亚洲美女精品久久久| 欧美日韩国产色| 欧美激情视频一区二区三区不卡| 欧美在线日韩在线| 色无极亚洲影院| 日本一区二区不卡| 亚洲国产97在线精品一区| 日韩在线免费高清视频| 九九热r在线视频精品| 91色中文字幕| 亚洲国产成人av在线| 久久6精品影院| 国产精品va在线播放我和闺蜜| 一区二区三区日韩在线| 国产极品精品在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品久久久久久久av大片| 久久这里有精品视频| 青青a在线精品免费观看| 亚洲综合在线播放| 亚洲一区二区三区xxx视频| 狠狠躁夜夜躁人人爽超碰91| 亚洲男女自偷自拍图片另类| 欧美国产精品人人做人人爱| 国产一区二区在线免费| 6080yy精品一区二区三区| www.欧美视频| 亚洲一级黄色片| 亚洲第一黄色网| 中文字幕精品国产| 久久久亚洲欧洲日产国码aⅴ| 精品久久中文字幕| 国产成人97精品免费看片| 亚洲男人第一网站| 欧美美女15p| 在线电影中文日韩| 亚洲综合色激情五月| 国产精品久久久久久av下载红粉| 91九色单男在线观看| 一区二区三区视频在线| 日韩中文字幕免费看| 97在线视频免费播放| 欧美日韩日本国产| 欧美激情久久久| 国产日本欧美一区| 大荫蒂欧美视频另类xxxx| 午夜精品99久久免费| 久久久久久久久久久国产| 日韩精品视频免费| 日韩成人中文字幕| 国产精品pans私拍| 国产亚洲精品久久久| 68精品国产免费久久久久久婷婷| 66m—66摸成人免费视频| 色先锋久久影院av| 91av在线播放| 亚洲精品久久7777777| 韩国一区二区电影| 精品久久久国产| zzijzzij亚洲日本成熟少妇| 亚洲精品国偷自产在线99热| 国产精品毛片a∨一区二区三区|国| 亚洲精品不卡在线| 国产精品视频免费在线观看| 久久理论片午夜琪琪电影网| 亚洲裸体xxxx| 国产精品看片资源| 亚洲精品理论电影| 亚洲激情视频在线| 国产精品久久久久77777| 亚洲视频日韩精品| 操日韩av在线电影| 成人国产精品一区二区| 精品动漫一区二区三区| 高清视频欧美一级| 久久99精品国产99久久6尤物| 成人深夜直播免费观看| 中文字幕在线看视频国产欧美在线看完整| 久久91精品国产91久久跳| 亚洲一级黄色片| 中文欧美日本在线资源| 日韩中文字幕精品视频| 欧美国产一区二区三区| 欧美日韩美女在线观看| 精品偷拍一区二区三区在线看| 亚洲男人天堂2019| 亚洲精品久久久久中文字幕欢迎你| 亚洲一区av在线播放| 国外色69视频在线观看| 国产精品白嫩美女在线观看| 精品视频中文字幕| 欧美寡妇偷汉性猛交| 欧美精品videossex88| 国产99久久精品一区二区永久免费| 国产精品视频一区国模私拍| 久久久久久久久亚洲| 国产成人一区二区三区小说| 一夜七次郎国产精品亚洲| 欧美丝袜美女中出在线| 亚洲在线www|