开发一个小的php扩展

今天试了一下在php添加扩展,看了挺多资料,细节上不一致,其他大体是差不多的。

我们来开发一个叫ccvita_string的函数,他的主要作用是返回一段字符,对应的php代码可能如此:

function ccvita_string($str){
     $result = ‘<a href="‘.$str.‘">Link</a>‘;
     return $result;
}即生成链接

第一步,生成代码

进入php源代码中自带的工具ext_skel,利用其创建文件。

首先我们创建一个文件ccvita.skel,它的内容为

string ccvita_string(string str)

就是告诉ext_skel这个东西,我们要做的扩展里面有个函数叫ccvita_string。然后执行

cd sofe/hongxin/src/php-5.3.27/ext/
./ext_skel --extname=ccvita --proto=ccvita.skel
cd ccvita/

这时候,ccvita这个扩展的代码框架就已经出来了。

第二步,修改配置

vim 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])

第三步,实现功能

vim ccvita.c

找到将ccvita_string这个函数修改为

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);
}

第四步,编译扩展

保存后,开始编译

/usr/local/php/bin/phpize    //务必是当前运行的phpize,避免将其他版本php执行
./configure --with-php-config=/usr/local/php/bin/php-config  //这里需要带上当前运行的php-config路径
make && make install

第五步,添加扩展

这时候,一切顺利的话,该扩展已经在modules/ccvita.so这个位置了。下面就是将这个扩展加入到PHP中去,让我们PHP程序可以调用到。

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服务
cp ccvita.php /data/www/wwwroot/default/  

接下来就可以访问ccvita.php这个文件,测试扩展了

直接使用

ccvita_string($str)

即可

时间: 2024-08-06 15:27:14

开发一个小的php扩展的相关文章

开发一个小程序点餐系统多少钱?

餐饮行业开发一个类似美团的点餐外卖小程序,属于自己的平台,不需要缴纳各种费用,而且背靠微信,有充足的流量为后盾,可谓一举多得.那么小程序点餐系统多少钱?开发小程序+点餐系统价格多少? 微信点餐外卖小程序优势: 1.开放的用户体系:点餐小程序无需登录,直接采用微信账号体系,极大降低用户首次使用门槛,同时方便用户信息收集. 2.分享红利:小程序可方便分享到微信个人和群聊窗口,会话中点击即用,非常方便传播. 3.线上线下打通:小程序最佳入口是扫描二维码,线下用户只需简单扫码,即可转换为小程序用户. 4

自己开发一个小程序需要多少钱?有哪些费用?

本文读完仅需3分钟:1.自主开发费用:2.第三方模板费用:3.定制开发费用. ?随着小程序的普及,越来越多的商家产生了开发需求,今天的文章就来给大家分享下不同小程序开发方式的费用,自主开发还是购买模板划算一目了然: 一.自主开发费用多 (1)认证费 首先要知道,注册小程序是不要钱的,但审核认证需要300的认证费,不过这是针对直接注册小程序的,如果你拥有经过认证的公众号,再注册小程序是不需要支付认证费的,需要注意的是认证费是需要每年续费的. (2)人工费 除了基本的技术开发人员外,制作一个小程序还

《Node入门》读书笔记——用Node.js开发一个小应用

如需转载请注明出处 http://blog.csdn.net/as645788 Android APP的开发告一段落,一个稳定的.实现了基本功能的APP已经交付用户使用了!我和老板交流了下,接下来准备转战Node.js了,而且一部分前端的功能也要做进去!哈哈哈~~~接下来要朝一个全(zuo)栈(si)工程师进发了,想想都有点小激动呢!这几天一直在学新东西,HTML CSS JavaScript jQuery SQL bootstrap Node.js ··········· (好吧,看着这么多前

Android笔记2——开发前奏2工程目录介绍和一个小应用

转载请注明http://www.cnblogs.com/devtrees/p/4405519.html 一.创建第一个应用HelloWorld (一)创建步骤: 1.New出一个Android Application Project 三种方式 1): 2): 3): 2.会出现下图的窗口: 分别是:应用名:给用户看的 工程名:开发工具中显示的项目名 包名: 客户端中设置->应用->应用列表中显示的名字 兼容的最低版本: 兼容的最高版本: 开发基于的版本:(一般将兼容的最高版本和开发所基于的版本

[原创]快速开发一个PHP扩展

http://blog.csdn.net/taft/article/details/596291 http://blog.csdn.net/heiyeshuwu/article/details/3453854 [原创]快速开发一个PHP扩展,布布扣,bubuko.com

linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol &amp;#39;[email&#160;protected]@GLIBC_2.2.5&amp;#39;

解决cocos2d-x中编译出现的一个小问题 对于cocos2d-x 2.×中编译中,若头文件里引入了#include "cocos-ext.h",在进行C++编译的时候会遇到例如以下错误: undefined reference to symbol '[email protected]@GLIBC_2.2.5'/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command li

iOS开发之使用UICollectionView实现美团App的分类功能【偶现大众点评App的一个小bug】

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 例如以下图示[美团和大众点评]: 实现分类控件功能的思路: 1.实现collection v

动手开发一个名为“微天气”的微信小程序(上)

引言:在智能手机软件的装机量中,天气预报类的APP排在比较靠前的位置.说明用户对天气的关注度很高.因为人们无论是工作还是度假旅游等各种活动都需要根据自然天气来安排.跟着本文开发一个"微天气"小程序,方便微信网友随时查看天气.接下来两天小编将同您一起开发一个"微天气"小程序,本文首先向大家介绍"微天气"的API与界面代码编写.本文选自<从零开始学微信小程序开发>. 在一套软件系统中,微信小程序通常是作为前端来使用的,一般还需要有后端的系

BeX5开发中MySQL视图使用的一个小问题

问题 数据操作中的查询是极端重要的,使用频繁.MySQL数据库中视图概念的存在十分类似于微软Access小型关系数据库中的查询(二级考试重点).视图的存在极大减小了数据表的创建数量,而且还有更为高级的运用技巧.本文介绍在基于起步科技的BeX5平台上使用MySQL数据库中视图时反向生成本体时注意的一个小问题. MySQL数据库中表在BeX5平台开发中对应于"物理表"概念,但是为了增强软件开发中数据层的灵活性(软件需求阶段的实体结构不是一下百分之分确定的:有时需要不断调整),平台引入了本体