菜鸟学php扩展 之 详解扩展函数的传参(如何获取参数)(三)

转载请附上本文地址:http://blog.csdn.net/u011957758/article/details/72513935

前言

经过上一文 菜鸟学php扩展 之 自动生成的扩展框架详解(二) ,对php扩展框架的整体了解,基本上可以说,对于扯淡如何写php扩展和关键点有了一定的把握,但关键的还是在于如何写PHP_FUNCTION的函数。
本文主要记录一下,php在调用扩展的时候进行传参,那么扩展函数是怎么接招的。当作自己的备忘录

正文

1.zend_parse_parameters

获取函数传递的参数,可以使用zend_parse_parameters函数,细心的同学会发现官方生成的默认的函数也是用这个函数来接收参数的。

这个函数怎么用?

首先可以把这个看书当作php的scanf一样使用。(这个函数不熟悉的自觉这里)

zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, &参数1,&参数2…);

第一个参数是传递给函数的参数个数。通常的做法是传给它ZEND_NUM_ARGS()。(ZEND_NUM_ARGS() 来表示对传入的参数“有多少要多少”)这是一个表示传递给函数参数总个数的宏。

第二个参数是为了线程安全,总是传递TSRMLS_CC宏。

第三个参数是一个字符串,指定了函数期望的参数类型,后面紧跟着需要随参数值更新的变量列表。由于PHP是弱类型语言,采用松散的变量定义和动态的类型判断,而c语言是强类型的,而zend_parse_parameters()就是为了把不同类型的参数转化为期望的类型。(当实际的值无法强制转成期望的类型的时候,会发出一个警告)

第四第五直到第n个参数,都是要传进来的值的数值。

第三个参数详解

关于第三个参数,这里提供一个供选择的参数列表:

类型指定符 对应的C类型 描述
l long 符号整数
d double 浮点数
s char *, int 二进制字符串,长度
b zend_bool 逻辑型(1或0)
r zval * 资源(文件指针,数据库连接等)
a zval * 联合数组
o</
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值