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()
测试代码(php):
$a = 'init';
byref_compiletime($a);
echo $a;