2016-04-01 2 views
1

Я выполнил шаги, указанные в Passing a variable by reference into a PHP extension, для передачи переменной по ссылке в расширение PHP. Это отлично работает для PHP 5, но когда я пытаюсь сделать то же самое в Php7 и его не работает. Какие-либо предложения? Вот мой фрагмент кода.Передача переменной по ссылке в расширение 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) 

Благодарим за помощь.

ответ

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); 
} 
+0

Спасибо. Изменено от «z» до «z /». – Radha