我已经在C 中创建了PHP扩展。版本PHP 5.6中能够获得当前执行的功能详细信息。我得到的参数价值如下,
if (real_execute_data->function_state.arguments)
{
void **p = real_execute_data->function_state.arguments;
int arg_count = (int)(zend_uintptr_t)* p;
zval *argument_element;
for (i = 0; i < arg_count; i++)
{
argument_element = (zval*)*(p - (arg_count - i));
// here can reads the value from argument_element
}
}
在版本php 7.2中,我找不到zend_execute_data.i内部的函数_STATE结构。我在_zend_arg_info结构中尝试过,它给出了函数参数变量名称,而不是值。我如何在上面的php 7中获得函数参数值?
是。我得到了它。如下所示,我们可以在PHP 7及以上获得函数参数(zend_execute_data *real_execute_data(,
int arg_count = ZEND_CALL_NUM_ARGS(real_execute_data);
int i;
for (i = 1; i <= arg_count; i++)
{
zval *argument_element = ZEND_CALL_ARG(real_execute_data, i);
// we can reads the argument value from "argument_element".
}