通过引用将变量传递给PHP7扩展

时间:2016-04-01 05:59:45

标签: pass-by-reference php-extension

我按照Passing a variable by reference into a PHP extension中提到的步骤将引用的变量传递给PHP扩展。这对于PHP 5工作正常但是当我在Php7中尝试相同并且它不起作用时。有什么建议?这是我的代码段。

ZEND_BEGIN_ARG_INFO(params_ref_arg_arginfo, 0) 
  ZEND_ARG_INFO(1, a)
ZEND_END_ARG_INFO()

PHP_FUNCTION(sample_byref_compiletime)
{
    zval *a;     
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &a ) == FAILURE)
    {
        php_printf("Error");
        RETURN_NULL();
    }         
    zval_dtor(a);   
    ZVAL_LONG(a, 40);
}

  PHP_FE(sample_byref_compiletime, params_ref_arg_arginfo)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

从" z"更改到" z /"。查看https://wiki.php.net/phpng-upgrading中的详细信息。可能的类型说明符http://php.net/manual/en/internals2.funcs.php

您也可以将代码更改为:

PHP_FUNCTION(sample_byref_compiletime)
{
    zval *a;     
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
        "z", &a ) == FAILURE)
    {
        php_printf("Error");
        RETURN_NULL();
    }
    ZVAL_DEREF(a);
    SEPARATE_ZVAL_NOREF(a);
    zval_dtor(a);   
    ZVAL_LONG(a, 40);
}