久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP7擴(kuò)展開(kāi)發(fā)教程之Hello World實(shí)現(xiàn)方法示例

這篇文章主要介紹了PHP7擴(kuò)展開(kāi)發(fā)教程之Hello World實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了針對(duì)php7擴(kuò)展的源碼下載、設(shè)置、代碼編輯及測(cè)試運(yùn)行相關(guān)操作技巧,需要的朋友可以參考下

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

一、下載PHP源代碼

要開(kāi)發(fā)PHP擴(kuò)展,需要先下載PHP的源代碼,一方面是因?yàn)槲覀兊臄U(kuò)展一般會(huì)用到PHP自身定義的函數(shù)和宏,另一方面我們可以利用官方提供的工具減少工作量。

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

解壓源碼壓縮包, tar xzf php-7.0.2.tar.gz,我們現(xiàn)在只需要關(guān)注Zend和ext這兩個(gè)目錄。

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

ext目錄里面包含了PHP原生的擴(kuò)展,以及我們開(kāi)發(fā)自己的擴(kuò)展時(shí)可以利用的工具,Linux下使用ext_skel,Windows下使用ext_skel_win32.php

二、使用ext_skel工具

我們可以在ext目錄下看到所有的PHP原生擴(kuò)展,其中包括了熟悉的curl,json,mbstring,simplexml,sockets等擴(kuò)展,還有很多沒(méi)有用過(guò)甚至沒(méi)有聽(tīng)說(shuō)過(guò)的擴(kuò)展,不用在意這些,我們先打開(kāi)我們最熟悉的curl來(lái)看看,有config.m4配置文件,有php_curl.h,curl_file.c等源代碼,還有一些中間文件,最后還有一個(gè)tests目錄,里面放的curl擴(kuò)展的單元測(cè)試。重點(diǎn)關(guān)注config.m4,php_curl.h,curl_file.c即可,最簡(jiǎn)單的場(chǎng)景下這三個(gè)文件就是一個(gè)擴(kuò)展的全部組成部分了。

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

./ext_skel --extname=hello

ext目錄下多了一個(gè)hello目錄,我們后續(xù)的工作都在這個(gè)目錄下面,工具已經(jīng)為我們自動(dòng)生成了一些文件。

config.m4配置文件

開(kāi)發(fā)PHP擴(kuò)展,在寫(xiě)C代碼之前,要先配置一下這里。我們打開(kāi)可以看到詳細(xì)的注釋說(shuō)明,dnl是注釋語(yǔ)法。

如果你的擴(kuò)展用到了外部依賴,就配置--with-hello選項(xiàng),否則配置--enable-hello選項(xiàng),刪除這下面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這兩個(gè)宏用來(lái)配置configure選項(xiàng),一個(gè)配置需要外部依賴的,另一個(gè)配置不需要外部依賴的

配置好的內(nèi)容,在后面執(zhí)行configure --help時(shí)可以看到。

php_hello.h頭文件

類(lèi)似于C語(yǔ)音的頭文件,包含了一些自定義的結(jié)構(gòu)和函數(shù)聲明,在這個(gè)demo中暫時(shí)不需要改動(dòng)

hello.c代碼文件

真正的邏輯代碼都在這個(gè)文件中,后面會(huì)詳細(xì)介紹。

三、編寫(xiě)代碼

好了,到這一步我們終于要開(kāi)始寫(xiě)代碼了,打開(kāi)hello.c文件。

整個(gè)擴(kuò)展的入口是zend_module_entry這個(gè)結(jié)構(gòu),具體的定義可以在Zend目錄下的zend_modules.h文件中看到,一共有十幾個(gè)屬性,快速跳過(guò),我們暫時(shí)只需要"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幫我們實(shí)現(xiàn)了前面6個(gè)屬性

"hello"是擴(kuò)展的名字

hello_functions是擴(kuò)展包含的全部方法的集合

后面5個(gè)宏分別代表5個(gè)擴(kuò)展特定方法

PHP_HELLO_VERSION是擴(kuò)展的版本號(hào),定義在頭文件中

STANDARD_MODULE_PROPERTIES幫我們實(shí)現(xiàn)了剩下的屬性

暫時(shí)都不需要修改,知道這是一個(gè)入口就行。順著這個(gè)入口,我們繼續(xù)看怎么給擴(kuò)展添加方法,在hello_functions[]方法數(shù)組中已經(jīng)有了一個(gè)示例方法confirm_hello_compiled,我們參考它寫(xiě)我們的方法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[] */
};

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

本篇文章給大家詳細(xì)介紹了PHP開(kāi)發(fā)接口使用RSA進(jìn)行加密解密方法,對(duì)此有興趣的朋友可以學(xué)習(xí)下。
下面小編就為大家分享一篇Ubuntu上安裝yaf擴(kuò)展的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
下面小編就為大家分享一篇php通過(guò)pecl方式安裝擴(kuò)展的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
本篇文章是小編為大家整理的關(guān)于PHP開(kāi)發(fā)規(guī)范的相關(guān)內(nèi)容,適合PHP初學(xué)者,一起參考下吧。
微信公眾好的開(kāi)發(fā)很火,小程序更火。小編給大家分享一個(gè)PHP開(kāi)發(fā)之用微信遠(yuǎn)程遙控服務(wù)器的實(shí)例代碼,需要的朋友參考下
這篇文章主要為大家詳細(xì)介紹了PHP微信開(kāi)發(fā)之微信錄音臨時(shí)轉(zhuǎn)永久存儲(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
主站蜘蛛池模板: 日韩在线一区二区三区 | 综合久久久久 | 国产精品久久久久久久久婷婷 | 一级午夜aaa免费看三区 | 免费在线成人 | 毛片网站在线观看 | 精品一区二区久久久久久久网站 | 一区二区不卡高清 | 精品在线看 | 天堂影院av| 亚洲日本免费 | 九九综合九九 | 午夜影院在线免费观看视频 | 精品久久久久久久久久久久 | 久久精彩视频 | 99久久精品国产一区二区三区 | 色香婷婷 | 久久一区二区精品 | 91精品国产综合久久久久久丝袜 | 国户精品久久久久久久久久久不卡 | 日韩欧美国产精品一区 | 国产精品久久视频 | 在线成人免费观看 | 国产一区二区电影 | 日本成人免费观看 | av高清毛片 | 亚洲精品福利在线 | 一区二区三区免费 | 91精品欧美久久久久久久 | 日日操夜夜操天天操 | 日韩在线看片 | 日韩在线精品视频 | 福利视频大全 | 在线看av的网址 | 久久精品综合网 | 国产在线精品一区二区 | 亚洲第一成年免费网站 | 国产av毛片 | 欧美国产一区二区 | 爱爱小视频| av网址在线|