PHP扩展模块的引用参数实现

如果一个函数叫


function test( & $retCode )
{
$retCode = 1;
}

那么test($ret)后,$ret的值就为1,这个和C/C++里的指针、引用参数是一样的

在PHP扩展模块里,我们也可以实现这种写法


PHP_FUNCTION(php_test)
{
zval out = NULL;
zval
Rg = NULL;

if( zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,”z”, &out) == FAILURE )
{
RETURN_NULL();
}

zval_dtor(out);
ALLOC_INIT_ZVAL(Rg);
array_init(Rg);

add_assoc_string(Rg, “name”, “slackcode”, sizeof(“slackcode”)-1, 1);

add_assoc_long(Rg, “age”, -1);

add_assoc_long(Rg, “luckyNum”, 11);



ZVAL_ZVAL(out, Rg, 1, 1);



RETURN_LONG(0);

}

这样子,我们调用


$person = NULL;
php_test($person);

将返回

Array
(
[name] => slackcode
[age] => -1
[luckyNum] => 11
)

这就实现了引用参数咯

可以到这里看看相关资料

0%