日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP扩展开发--实验成功

發(fā)布時間:2023/12/18 php 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP扩展开发--实验成功 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文:http://kimi.it/496.html

http://blog.csdn.net/u011957758/article/details/72234075

----------------------------------------------------------------------------------------------------------------

在上一篇文章《PHP擴(kuò)展開發(fā):安裝PHP》我們已經(jīng)將開發(fā)PHP擴(kuò)展的PHP環(huán)境安裝成功,那么接下來采用最簡單直接的方式創(chuàng)建第一個擴(kuò)展。

我們先假設(shè)業(yè)務(wù)場景,是需要有這么一個擴(kuò)展,提供一個叫ccvita_string的函數(shù),他的主要作用是返回一段字符。(這個業(yè)務(wù)場景實在太假,大家就這么看看吧)對應(yīng)的PHP代碼可能是這樣:

function ccvita_string($str){
? ? ?$result = '<a href="'.$str.'">Link</a>'
? ? ?return $result;
}

第一步,生成代碼
PHP為了擴(kuò)展開發(fā)的方便,提供了一個類似代碼生成器的工具ext_skel,具體可以參見說明。
首先我們創(chuàng)建一個文件ccvita.skel,它的內(nèi)容為

string ccvita_string(string str)


就是告訴ext_skel這個東西,我們要做的擴(kuò)展里面有個函數(shù)叫ccvita_string。然后執(zhí)行

cd MooENV/src/php-5.3.8/ext/
./ext_skel --extname=ccvita --proto=ccvita.skel
cd ccvita/


這時候,ccvita這個擴(kuò)展的代碼框架就已經(jīng)出來了。

?

?

第二步,修改配置
然后修改config.m4文件將10、11、12三行最前面的dnl刪除掉,就是將

dnl PHP_ARG_WITH(ccvita, for ccvita support,
dnl Make sure that the comment is aligned:
dnl [ ?--with-ccvita ? ? ? ? ? ? Include ccvita support])


修改為

PHP_ARG_WITH(ccvita, for ccvita support,
Make sure that the comment is aligned:
[ ?--with-ccvita ? ? ? ? ? ? Include ccvita support])

第三步,實現(xiàn)功能
修改源碼ccvita.c文件
找到將ccvita_string這個函數(shù)修改為

PHP_FUNCTION(ccvita_string)
{
? ? char *str = NULL;
? ? int argc = ZEND_NUM_ARGS();
? ? int str_len;
? ? char *result;
?
? ? if (zend_parse_parameters(argc TSRMLS_CC, "s", &str, &str_len) == FAILURE)
? ? ? ? return;
?
? ? str_len = spprintf(&result, 0, "<a href=\"%.78s\">Link</a>", str);
? ? RETURN_STRINGL(result, str_len, 0);
}

第四步,編譯擴(kuò)展
保存后,開始編譯

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make

第五步,添加擴(kuò)展
這時候,一切順利的話,該擴(kuò)展已經(jīng)在modules/ccvita.so這個位置了。下面就是將這個擴(kuò)展加入到PHP中去,讓我們PHP程序可以調(diào)用到。

cp modules/ccvita.so /usr/local/php/ext/
vim /usr/local/php/etc/php.ini
extension=/usr/local/php/ext/ccvita.so #在php.ini文件最后增加這一行
service php-fpm restart #重啟PHP服務(wù)
cp ccvita.php /data/www/wwwroot/default/

接下來就可以訪問ccvita.php這個文件,測試擴(kuò)展了。下一篇,將會涉及一些更深入的內(nèi)容。

相關(guān)代碼,可以在我的github上clone出來,地址:https://github.com/KimiChen/PHP-EXT

轉(zhuǎn)載于:https://www.cnblogs.com/oxspirt/p/7442412.html

總結(jié)

以上是生活随笔為你收集整理的PHP扩展开发--实验成功的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。