config.m4 ---------- 略
PHP_FUNCTION(byref_calltime)
{
zval *a;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a) == FAILURE){
//将接收的第一个参数直接赋给a
//如果传递给函数的参数数量小于zend_parse_parameters()要接收的参数数量,它便会执行失败,并返回FAILURE。
//如果我们需要接收多个参数,可以直接在zend_parse_paramenters()的参数里罗列接收载体便可以了,如:
RETURN_NULL();
}
if(!a->is_ref__gc){//如果a不是引用类型,直接结束
return ;
}
convert_to_string(a);//转换成字符串
ZVAL_STRING(a, "hello byzef", 1);//给a赋值
}
ZEND_BEGIN_ARG_INFO(byref_compiletime_arginfo, 0)//定义arg_info结构体, 与PHP_FUNCTION(byref_calltime) 对应
ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()
$a = 'init';
byref_compiletime($a);
echo $a;
本文通过一个 PHP 示例代码展示了如何使用 byref 参数特性。该特性允许函数修改传递给它的变量值,并且这些更改在函数外部也可见。文章包含了一个具体的函数实现及其调用示例。
396

被折叠的 条评论
为什么被折叠?



