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 MooENV/src/php-5.3.8/ext/
./ext_skel --extname=ccvita --proto=ccvita.skel
cd ccvita/

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

第二步,修改配置
然后修改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])

第三步,实现功能
修改源码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
./configure --with-php-config=/usr/local/php/bin/php-config
make

第五步,添加扩展
这时候,一切顺利的话,该扩展已经在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/

PHP扩展开发:第一个扩展

时间: 2024-10-12 23:17:34

PHP扩展开发:第一个扩展的相关文章

Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载

目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式 3.Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载 4.Chrome扩展开发之四——Gmail API的简单介绍 5.Chrome扩展开发之五——OAuth2的理解 6.Chrome扩展开发之六——GmailAssist核心功能的实现(包括Gmail API的使用中的

PHP开发第一个扩展

首先声明:我们要构建的是扩展或者模块名为hello_module.该模块提供一个方法:hello_word. 一.PHP环境的搭建 1)一般使用源码包编译安装,而不是binary包安装.因为使用PHP的二进制分发包安装有些冒险,这些版本倾向于忽略./configure的两个重要选项,它们在开发过程中很便利: 第一个--enable-debug.这个选项将把附加的符号信息编译进PHP的执行文件,以便如果发生段错误,你能从中得到一个内核转储文件,使用gdb追踪并发现什么地方以及为什么会发生段错误.

firefox扩展开发(一) : 扩展的基本结构

用过firefox的人肯定要安装firefox的扩展,这样才能发挥火狐的全部实力.一般扩展是一个后缀为.xpi的文件,其实这个文件就是zip格式的压缩包,压缩了一个扩展所需要的所有目录和文件,基本的目录结构如下: extension.xpi:/install.rdf /components/* /components/cmdline.js /defaults//defaults/preferences/*.js /plugins/* /chrome.manifest /chrome/icons/

PHP 扩展开发(将自己的一些代码封装成PHP扩展函数)

今天时间不多,先给个地址,能搜到我这篇blog的朋友先看看我最近在看的一些文章.资料吧: 我的环境就是lnmp1.1的哦 lnmp PHP扩展开发:第一个扩展 一步步入门编写PHP扩展 PHP扩展开发.pdf

Chrome扩展开发之四——核心功能的实现思路

目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式 3.Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载 4.Chrome扩展开发之四——核心功能的实现思路 如果你对GmailAssist感兴趣,可以在chrome商店中搜索“Gmail助手”,或点击这里直接访问商店来安装试用:如果你对GmailAssist的源码感兴趣,

php扩展开发

本文的环境是windows下开发php版本5.3 1.下载php5.3的源码包和php5.3的二进制包(平时使用的php程序包) 2.下载cygwin,并默认安装在c:\cygwin,因为生成php扩展框架的程序需要cygwin 3.假设php扩展的工作目录为d:\php,解压源码包和二进制包到这个目录 4.cmd命令行在d:\php\ext目录中运行 php ext_skel_win32.php --extname=yourext (如果php.exe程序的路劲未加入系统环境变量则需要自己指定

openstack 扩展开发最佳实践之计算节点高可用

前言:注意是扩展开发,这个词是我杜撰的,大概意思是指基于openstack的rest api做的一些开发,用于辅助相关功能,而不是直接改动openstack内的代码,怎么修改添加openstack各个组件的代码不在此文章内容内. 首先,千万,千万,千万不要用Openstack提供的SDK,原因如下. 一,SDK的相关文档并不健全. 二,版本不够统一,即兼容的问题. 所以不要使用openstack的SDK而是自己查阅openstack的API文档,通过requests库发http请求要比SDK灵活

【原创】PHP扩展开发入门

PHP扩展开发入门 作者:wf (360电商技术组) 在我们编写自己的第一个php扩展之前,先了解一下php的总体架构和执行机制. php的架构如图1所看到的. 当中一个重要的就是SAPI(server端应用编程端口),它使得PHP能够和其它应用进行数据交互,把外部错综复杂的外部环境进行抽象化,为内部的php提供一套固定和统一的接口.使得php自身不受外部影响,保持一定的独立性.常见的SAPI有CGI.FastCGI.Shell的CLI,apache的mod_php5,IIS的ISAPI. 另外

Firefox扩展开发

Firefox扩展开发 (插件开发) Extension开发 入门教程 5步走 五步走 首先需要知道什么是"Firefox插件".这里说的"插件"只是一个通俗的说法,其实Firefox这种扩展功能的"插件"包括:扩展extension和插件plugin. {tip:title=Handy Hint} Firefox官方网站的解释是:Extensions are small add-ons that add new functionality to