`
dengbaoleng
  • 浏览: 1131694 次
文章分类
社区版块
存档分类
最新评论

自己写PHP扩展之创建一个普通变量

 
阅读更多
声明:本文为斯人原创,全部为作者一一分析得之,有不对的地方望赐教。
欢迎转载,转载请注明出处 。
本文地址:http://imsiren.com/archives/568

PHP写扩展..

如果您还么有读 原:用C/C++扩展PHP

建议您先看一下这篇文章..

今天来个简单的..我们用扩展方式创建一个变量 $siren.

然后在PHP文件里面输出这个变量.

1. 执行源码目录中的 ext_skel –extname=siren

执行成功过后就会在php-src/ext/目录下生成一个siren的文件件,里面包含了扩展的基本结构.

2.修改config.m4

因为我的系统是Linux所以要修改此文件,我们采用so模块的形式加载,所以编辑config.m4文件

去掉1,3行的注释dnl,这样我们就可以用PHP以模块的形式加载..具体可以参见我上一篇文章http://imsiren.com/archives/547

3.编辑php_siren.h

此文件是一个头文件,包含了我们函数的定义.

我要新建一个variable函数,首先需要在此文件里面加一行代码:PHP_FUNCTION(variable); 可以理解为声明一个函数

4.修改siren.c源文件

在siren_functions数组里面添加一行 PHP_FE(variable,NULL);

然后在 最下面添加如下代码


zval接口用来保存变量的信息
MAKE_STD_ZVAL宏用来分配内存空间
ZVAL_STRING宏给zval结构设置信息.
如果不懂 请参见 原创:PHP内核研究:HASH表和变量
最后在php-src/ext/siren目录下执行
1. php安装目录/bin/phpize
2. ./configure –with-php-config=/php安装目录/bin/php-config
3. make && make install
这样 执行后就会在 php的扩展目录下生成一个 siren.so文件
4. 修改php.ini extension=siren.so 开启扩展
5. 编写PHP文件 执行 variable(); 然后 echo $siren;
看看是不是输出了 “this is siren”呢?
怎么样 是不是很简单..

原文出处:http://imsiren.com/archives/568

分享到:
评论

相关推荐

    PHP和MySQL Web开发第4版pdf以及源码

    1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用...

    PHP和MySQL WEB开发(第4版)

    1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数...

    PHP和MySQL Web开发第4版

    1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用...

    php网络开发完全手册

    目录 第1章 PHP的介绍及环境搭建 2 1.1 PHP简介 2 1.1.1 PHP语言的发展简史 2 1.1.2 PHP的发展现状与未来展望 3 1.1.3 PHP语言的优势 3 ...18.2 使用MySQL与PHP创建一个留言本 300 18.2.1 查看留言功能...

    PHP入门到精通

    2.8第一个PHP实例 3.PHP语言基础(教学录像:49分19秒) 3.1PHP标记风格 3.2PHP注释的应用 3.3PHP的数据类型 3.4PHP常量 3.5PHP变量 3.6PHP运算符 3.7PHP的表达式 3.8PHP函数 3.9PHP编码规范 4.流程控制语句(教学...

    PHP入门到精通02

    2.8第一个PHP实例 3.PHP语言基础(教学录像:49分19秒) 3.1PHP标记风格 3.2PHP注释的应用 3.3PHP的数据类型 3.4PHP常量 3.5PHP变量 3.6PHP运算符 3.7PHP的表达式 3.8PHP函数 3.9PHP编码规范 4.流程控制语句(教学...

    PHP3程序设计

    PHP是最流行的Web脚本语言之一,它运行在Web服务器端,根据用户请求或服务器端的数据产生动态网页;它功能强大,和HTML脚本融合在一起,并内建访问数据库的能力;它能够作为Apache Web 服务器的模块执行,也使得其...

    javascript入门笔记

    1、声明一个变量 r ,来表示一个圆的半径,并赋值 2、声明一个常量PI ,来表示圆周率3.14 3、通过 r 和 PI 来计算 该圆的周长,保存在变量l中 周长 = 2 * π * 半径 4、通过 r 和 PI 来计算 该圆的面积,保存在...

    X-Cart Gold 4.5.4.zip

    ] 17 10月2012年,随机 - 如果没有正确地分析问题(0127141):内部AJAX在一个弹出的消息已被打开另一个弹出以前。固定的。 *后台* [18] 2012年10月的目标 - 问题(0127048):删除错误日志消息从的X车黄金/ ...

    精通sql结构化查询语句

    23.1.2 PHP开发环境的安装 23.2 PHP连接SQL Server服务器 23.2.1 使用PHP的MSSQL扩展 23.2.2 PHP连接SQL Setver的必要条件 23.3 使用PHP存取SQL Server数据库 23.3.1 选择操作的数据库 23.3.2 在数据库中创建表 ...

    MySQL 5.1中文手冊

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MySQL 5.1参考手册 (中文版)

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    mysql官方中文参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    MYSQL中文手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用...

    MySQL 5.1参考手册

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +PageManager.Instance应该存在于HttpContext.Current,而不是一个全局变量。 -这个BUG导致Asp.net compatibility中的示例无法完成,现在已经修正。 +去除PageManager中方法AddAjaxAspnetControls,增加属性...

    MySQL5.1参考手册官方简体中文版

    在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 7.5.3. 控制查询优化器的性能 7.5.4. 编译和链接怎样影响MySQL的速度 7.5.5. MySQL如何使用内存 ...

Global site tag (gtag.js) - Google Analytics