目录
- 函数参数
- 函数定义
- 函数返回
- PHPAPI函数调用
- 类型转换函数
- 判断是否回调函数
- 调用用户空间函数
函数参数
//类成员函数的参数宏定义
ZEND_BEGIN_ARG_INFO_EX(name, pass_rest_by_reference, return_reference, required_num_args)
ZEND_ARG_PASS_INFO(by_ref)
ZEND_ARG_INFO(by_ref, name)
ZEND_ARG_ARRAY_INFO(by_ref, name, allow_null)
ZEND_ARG_OBJ_INFO(by_ref, name, classname, allow_null)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX 宏用于声明参数的属性
参数 |
用途 |
name |
参数信息名 |
pass_rest_by_reference |
是否引用传参,如果这个参数设置为1, 所有没有在结构中显式描述的参数都被认为是编译期引用传值的参数. |
return_reference |
引用返回,告诉Zend你的函数需要用自己的zval覆写return_value_ptr. |
required_num_args |
必输的参数个数 |
其他的宏用于描述,参数的具体类型
宏 |
用途 |
ZEND_ARG_PASS_INFO |
标识是否对应的参数应该被强制为引用传值 |
ZEND_ARG_INFO |
普通参数, name 为参数名 |
ZEND_ARG_ARRAY_INFO |
传入参数必须为数组, name 为参数名, allow_null 是否可以为空 |
ZEND_ARG_OBJ_INFO |
传入参数必须为对象,name 为参数名, classname 为对象名, allow_null 是否可空 |
接收参数
扩展通过zend_parse_parameters() 函数接受来自用户空间的参数。
类型 |
用户空间数据类型 |
C语言中的对应数据类型 |
b |
Boolean |
zend_bool |
l |
Integer |
long |
d |
Floating point |
double |
s |
String |
char *, int |
r |
Resource |
zval * |
a |
Array |
zval * |
o |
Object instance |
zval * |
O |
Object instance of a specified type |