扣丁學(xué)堂PHP培訓(xùn)之PHP7擴(kuò)展開發(fā)方法詳解
2018-01-25 13:58:05
1514瀏覽
今天扣丁學(xué)堂給大家介紹一下關(guān)于從零開始創(chuàng)建一個(gè)PHP擴(kuò)展,開發(fā)環(huán)境為php7,實(shí)現(xiàn)一個(gè)自定義函數(shù)say_hi,調(diào)用此函數(shù)返回HelloWorld。下面我們一起來看一下吧。
一生成代碼
PHP提供了生成基本代碼的工具ext_skel,這個(gè)工具在PHP源代碼的./ext目錄下
$cdphp_src/ext/
$./ext_skel--extname=say_hi
extname參數(shù)的值就是擴(kuò)展名稱,執(zhí)行ext_skel命令后,會(huì)在當(dāng)前目錄下會(huì)生成一個(gè)與擴(kuò)展名一樣的目錄。
二修改config.m4配置文件
config.m4的作用是配合phpize工具生成configure文件(onfigure文件是用于檢測(cè)擴(kuò)展編譯運(yùn)行所需的環(huán)境是否滿足),現(xiàn)在開始修改config.m4文件
$cd./say_hi
$vim./config.m4
config.m4文件有這樣一段文字
dnlIfyourextensionreferencessomethingexternal,usewith:
dnlPHP_ARG_WITH(say,forsaysupport,
dnlMakesurethatthecommentisaligned:
dnl[--with-sayIncludesaysupport])
dnlOtherwiseuseenable:
dnlPHP_ARG_ENABLE(say,whethertoenablesaysupport,
dnlMakesurethatthecommentisaligned:
dnl[--enable-sayEnablesaysupport])
其中,dnl是注釋符號(hào),上面的代碼意思是如果你所編寫的擴(kuò)展依賴其它的擴(kuò)展或者lib庫,需要去掉PHP_ARG_WITH相關(guān)代碼的注釋。否則,去掉PHP_ARG_ENABLE相關(guān)代碼段的注釋。我們編寫的擴(kuò)展不需要依賴其他的擴(kuò)展和lib庫。因此,我們?nèi)サ鬚HP_ARG_ENABLE前面的注釋。去掉注釋后的代碼如下:
dnlIfyourextensionreferencessomethingexternal,usewith:
dnlPHP_ARG_WITH(say,forsaysupport,
dnlMakesurethatthecommentisaligned:
dnl[--with-sayIncludesaysupport])
dnlOtherwiseuseenable:
PHP_ARG_ENABLE(say,whethertoenablesaysupport,
Makesurethatthecommentisaligned:
[--enable-sayEnablesaysupport])
三實(shí)現(xiàn)擴(kuò)展方法
修改say_hi.c文件來實(shí)現(xiàn)say_hi方法,找到PHP_FUNCTION(confirm_say_hi_compiled),在其上面增加如下代碼:
PHP_FUNCTION(say_hi)
{
zend_string*strg;
strg=strpprintf(0,"HelloWorld");
RETURN_STR(strg);
}
找到PHP_FE(confirm_say_hi_compiled,NULL),在上面增加如下代碼:
PHP_FE(say_hi,NULL)
修改后的代碼如下:
constzend_function_entrysay_functions[]={
PHP_FE(say_hi,NULL)
PHP_FE(confirm_say_hi_compiled,NULL)/*Fortesting,removelater.*/
PHP_FE_END/*Mustbethelastlineinsay_functions[]*/
};
/*}}}*/
四編譯安裝寫好的擴(kuò)展
$phpize
$./configure
$make&&makeinstall
修改php.ini文件,增加如下代碼:
extension=say_hi.so
然后執(zhí)行php-m命令查看已安裝擴(kuò)展,在輸出的內(nèi)容中如果有say_hi則說明安裝成功
五測(cè)試
寫一個(gè)腳本test.php,假如放在home目錄,內(nèi)容如下:
echosay_hi();
然后執(zhí)行:
php~/test.php
輸出HelloWorld,擴(kuò)展編寫成功
以上就是關(guān)于扣丁學(xué)堂
PHP培訓(xùn)之PHP7擴(kuò)展開發(fā)方法的詳細(xì)介紹,最后想要了解更多關(guān)于PHP開發(fā)發(fā)展前景趨勢(shì),請(qǐng)關(guān)注扣丁學(xué)堂官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的
PHP視頻教程系統(tǒng),通過千鋒扣丁學(xué)堂金牌講師在線錄制的一套PHP視頻教程課程,讓你快速掌握PHP從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
PHP培訓(xùn)
PHP視頻教程
PHP從入門到精通
PHP學(xué)習(xí)路線圖
PHP開發(fā)工程師