位置: 編程技術(shù) - 正文
推薦整理分享PHP7擴(kuò)展開發(fā)教程之Hello World實(shí)現(xiàn)方法示例(php添加擴(kuò)展),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。
文章相關(guān)熱門搜索詞:php 安裝擴(kuò)展,php 安裝擴(kuò)展,php擴(kuò)展庫(kù),php擴(kuò)展庫(kù),php引入擴(kuò)展,php擴(kuò)展庫(kù),php擴(kuò)展庫(kù),php_fileinfo擴(kuò)展,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!
本文實(shí)例講述了PHP7擴(kuò)展開發(fā)教程之Hello World實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
一、下載PHP源代碼
要開發(fā)PHP擴(kuò)展,需要先下載PHP的源代碼,一方面是因?yàn)槲覀兊臄U(kuò)展一般會(huì)用到PHP自身定義的函數(shù)和宏,另一方面我們可以利用官方提供的工具減少工作量。
我下載了PHP-7.0.2,地址是: 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ò)展,以及我們開發(fā)自己的擴(kuò)展時(shí)可以利用的工具,Linux下使用ext_skel,Windows下使用ext_skel_win.php
二、使用ext_skel工具
我們可以在ext目錄下看到所有的PHP原生擴(kuò)展,其中包括了熟悉的curl,json,mbstring,simplexml,sockets等擴(kuò)展,還有很多沒有用過甚至沒有聽說過的擴(kuò)展,不用在意這些,我們先打開我們最熟悉的curl來看看,有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ò)展的全部組成部分了。
打開隨便看一下,不算太復(fù)雜,但是自己寫一個(gè)類似的還是挺頭疼的,這時(shí)就需要用到我前面提到的ext_skel工具了。這個(gè)工具也在ext目錄下,我們執(zhí)行一下,./ext_skel --help,可以看到若干參數(shù),我們用到的只有--extname=module,這里填上自己開發(fā)的擴(kuò)展名稱。想深入了解各個(gè)參數(shù)的作用可以看這里: --help時(shí)可以看到。
php_hello.h頭文件
類似于C語(yǔ)音的頭文件,包含了一些自定義的結(jié)構(gòu)和函數(shù)聲明,在這個(gè)demo中暫時(shí)不需要改動(dòng)
hello.c代碼文件
真正的邏輯代碼都在這個(gè)文件中,后面會(huì)詳細(xì)介紹。
三、編寫代碼
好了,到這一步我們終于要開始寫代碼了,打開hello.c文件。
整個(gè)擴(kuò)展的入口是zend_module_entry這個(gè)結(jié)構(gòu),具體的定義可以在Zend目錄下的zend_modules.h文件中看到,一共有十幾個(gè)屬性,快速跳過,我們暫時(shí)只需要"hello world"。
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,我們參考它寫我們的方法hello_world
先在擴(kuò)展的方法數(shù)組中添加上hello_world,然后再定義hello_world。找到confirm_hello_compiled方法定義的地方,在它下面依葫蘆畫瓢,php_printf是Zend Engine中的printf方法。
四、編譯安裝
最后就是編譯安裝我們的擴(kuò)展了,安裝過PHP擴(kuò)展的同學(xué)不用看,沒有經(jīng)驗(yàn)的可以參考一下。
phpize
現(xiàn)在PHP的擴(kuò)展目錄中已經(jīng)有了hello.so這個(gè)文件,在php.ini中添加上擴(kuò)展的配置
五、測(cè)試
寫一個(gè)test.php方法,執(zhí)行腳本就可以看到"Hello World!"
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP擴(kuò)展開發(fā)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
php7安裝yar擴(kuò)展的方法詳解 本文實(shí)例講述了php7安裝yar擴(kuò)展的方法。分享給大家供大家參考,具體如下:體驗(yàn)RPC框架Yar需要:1.裝二進(jìn)制打包協(xié)議msgpack2.裝yar拓展和依賴一.安裝二進(jìn)
PHP實(shí)現(xiàn)將優(yōu)酷土豆騰訊視頻html地址轉(zhuǎn)換成flash swf地址的方法 本文實(shí)例講述了PHP實(shí)現(xiàn)將優(yōu)酷土豆騰訊視頻html地址轉(zhuǎn)換成flashswf地址的方法。分享給大家供大家參考,具體如下:很多用戶不知道如何復(fù)制flash地址,只
PHP基于自定義類隨機(jī)生成姓名的方法示例 本文實(shí)例講述了PHP基于自定義類隨機(jī)生成姓名的方法。分享給大家供大家參考,具體如下:自定義類rndChinaName.class.php:phpClassrndChinaName{private$arrXing,$numbX
標(biāo)簽: php添加擴(kuò)展
本文鏈接地址:http://esstyw.cn/biancheng/287569.html 轉(zhuǎn)載請(qǐng)保留說明!上一篇:phpStudy中升級(jí)MySQL版本到5.7.17的方法步驟(php升級(jí)到php7注意的問題)
網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)
友情鏈接: 武漢網(wǎng)站建設(shè)