通过引用将变量传递给 PHP7 扩展
Passing a variable by reference into a PHP7 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)
感谢您的帮助。
从 "z" 更改为 "z/"。在 https://wiki.php.net/phpng-upgrading. Possible type specifiers 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);
}
我按照 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)
感谢您的帮助。
从 "z" 更改为 "z/"。在 https://wiki.php.net/phpng-upgrading. Possible type specifiers 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);
}