从C 中的PHP扩展中获取函数参数值

Getting function argument value from PHP extension in c++

本文关键字:获取 函数 参数 扩展 中的 PHP      更新时间:2023-10-16

我已经在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".
    }