最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php 5.6版本中編寫(xiě)一個(gè)PHP擴(kuò)展的簡(jiǎn)單示例

 更新時(shí)間:2015年01月20日 09:03:25   投稿:junjie  
這篇文章主要介紹了php 5.6版本中編寫(xiě)一個(gè)PHP擴(kuò)展的簡(jiǎn)單示例,本文給出擴(kuò)展實(shí)現(xiàn)代碼、編譯方法、配置方法和使用例子等內(nèi)容,需要的朋友可以參考下

有時(shí)候在php本身沒(méi)有滿足需求的api時(shí)候,需要自己寫(xiě)相應(yīng)的擴(kuò)展,擴(kuò)展寫(xiě)完之后進(jìn)行編譯,即可加入自己的開(kāi)發(fā)環(huán)境中,擴(kuò)展php的功能。

這里實(shí)現(xiàn)一個(gè)連接字符串和int型數(shù)的連接操作的簡(jiǎn)單擴(kuò)展。

首先,下載最新的php源碼安裝包,進(jìn)入ext/目錄,新建extstrcat.def:

復(fù)制代碼 代碼如下:

string extstrcat(string strarg, int intarg)

隨后運(yùn)行:
復(fù)制代碼 代碼如下:

./ext_skel --extname=extstrcat --proto=extstrcat.def

修改ext/extstrcat/config.m4,去掉如下行前面的注釋?zhuān)╠nl):
復(fù)制代碼 代碼如下:

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

此時(shí)來(lái)編輯ext/extstrcat/extstrcat.c,找到PHP_FUNCTION(extstrcat)函數(shù),這里表示擴(kuò)展中的方法名為extstrcat,方法實(shí)現(xiàn)如下:

復(fù)制代碼 代碼如下:

PHP_FUNCTION(extstrcat)
{
     char *strarg = NULL;
     int argc = ZEND_NUM_ARGS();
     int strarg_len;
     long intarg;
 
     char intargstr[10];
     int retstrlen = 0;
     char *retstr = NULL;
 
     if (zend_parse_parameters(argc TSRMLS_CC, "sl", &strarg, &strarg_len, &intarg) == FAILURE)
         return;
 
     snprintf(intargstr, 9, "%d", intarg);
     retstrlen = strarg_len + strlen(intargstr) + 1;
     retstr = (char *)malloc(sizeof(char)* retstrlen);
     memset(retstr, '\0', retstrlen);
     strncat(retstr, strarg, strlen(strarg));
     strncat(retstr, intargstr, strlen(intargstr));
     RETURN_STRING(retstr, 1);
 
     php_error(E_WARNING, "extstract: not yet implemented");
}

,其中strarg和intarg即為對(duì)應(yīng)的兩個(gè)字符串和整型參數(shù)。
接下來(lái)要做的事情就是編譯擴(kuò)展,

復(fù)制代碼 代碼如下:

phpize
./configure --enable-extstrcat
make

編譯成功之后,在ext/modules目錄下會(huì)生成extstrcat.so文件,

復(fù)制代碼 代碼如下:

cp ./modules/extstrcat.so /usr/local/lib/php/extensions/no-debug-non-zts-20121212/

修改php.ini,增加extension = extstrcat.so。
重啟php-fpm,運(yùn)行phpinfo()可以看到新增了extstrcat擴(kuò)展。
現(xiàn)在來(lái)寫(xiě)一個(gè)Demo,測(cè)試一下剛剛的php擴(kuò)展,

復(fù)制代碼 代碼如下:

<?php
if(!extension_loaded('extstrcat')) {
 dl('extstrcat.' . PHP_SHLIB_SUFFIX);
}
$ret=extstrcat('testarg',1234);
echo $ret;
?>

,命令行下運(yùn)行該文件,得到testarg1234.

相關(guān)文章

最新評(píng)論

南溪县| 墨脱县| 盐城市| 晋江市| 忻城县| 富蕴县| 炎陵县| 天峨县| 黄大仙区| 永兴县| 芮城县| 卓尼县| 东兴市| 淳安县| 连江县| 航空| 双桥区| 澄城县| 永定县| 平谷区| 乐业县| 微山县| 英超| 绍兴市| 绍兴市| 富锦市| 鲜城| 铁岭市| 寻乌县| 杭锦旗| 固阳县| 罗甸县| 平利县| 安平县| 容城县| 独山县| 兴城市| 绥阳县| 临清市| 德安县| 文昌市|