我正在尝试为PHP 7.2创建一个PHP扩展,我已经设法在PHP 7.2中为5.6创建,我已经基于新的Zend API对代码进行了必要的更改,但是现在我被困在这一点上,我想从扩展名中调用php用户定义函数。
我尝试使用call_user_function_ex函数来调用我的用户定义函数。
zval *function_name, *retval_ptr, *param_file, **params[1];
TSRMLS_FETCH();
ZVAL_STRINGL(function_name, functionRequire,
strlen(functionRequire));
ZVAL_STRINGL(param_file, ranKey,
strlen(ranKey));
params[0] = ¶m_file;
php_printf("%s %s 1st",functionRequire,ranKey);
//RETURN_NULL();
if (call_user_function_ex(CG(function_table), NULL, function_name,
&retval_ptr, 1, params, 0, NULL TSRMLS_CC) != SUCCESS) {
php_printf("%s\n",contactInfo );
zend_error(E_ERROR, "Function call failed ");
RETURN_NULL();
}
php_printf("%s %s 2nd",functionRequire,ranKey);
RETURN_NULL();
FREE_ZVAL(function_nameCh);
FREE_ZVAL(function_name);
FREE_ZVAL(param_file);
我尝试在每个语句后打印该值,之后我意识到在尝试调用“ call_user_function_ex”函数时该值会崩溃。我做错什么了吗,但是相同的代码在PHP 5.6中可以正常工作
请帮助。