首页 > 解决方案 > 在 PHP 扩展 C++ 中获取函数返回值

问题描述

我在 C++ 中创建了一个 php 扩展,它跟踪每个请求的调用图(centos7-64 位,PHP5.6)。现在,我想获取每个函数的函数返回值。它可以通过使用 zend_excute_data 结构(original_return_value)来完成。

 zend_execute_data *data;
 data = EG(current_execute_data);
 if(data->original_return_value)
 {
        zval *rvalue = *(data->original_return_value);    // crashing here
    switch (Z_TYPE(argument_element))
        {
        ..
        .. 
        ..
    }
 }

在这里,在将 original_return_value 分配给 rvalue 时,我的 php 扩展程序崩溃了。这是正确的做法吗?或其他任何东西。

标签: phpphp-extensionphp-internals

解决方案


最后我得到了它。

zval **return_value_ptr = &EX_TMP_VAR(execute_data, execute_data->opline->result.var)->var.ptr;

return_value_ptr 是当前执行函数的返回值。


推荐阅读