在每个 PHP 回溯级别获取范围内的变量?

2023-12-19

有没有办法在回溯中查看每个堆栈帧中设置的变量?我可以通过组合来非常接近debug_backtrace(true)来获取对象,get_object_vars在每个对象上获取 $this vars,args每个回溯帧中的键,以及get_defined_vars获取全局变量,但是在函数中设置的任何临时变量我找不到检索的方法。

这是一个示例情况:

function method1($foo) {
    $temp = method2($foo + 1);
    foreach ($temp as $t) {
        method2($t);
    }
}

function method2($bar) {
    $temp2 = $bar->value + $_GET['val'];
    debug();
}

function debug() {
    // to be created
    $global_scope = get_defined_vars();
    $bt = debug_backtrace(true);
}

I can get $foo and $bar通过argskey 在回溯中,对象变量$bar通过get_object_vars,以及全局变量get_defined_vars. I want得到的值$temp2 and $temp以及。


在您的(本地)服务器上安装并启用 XDebug。然后使用xdebug_get_declared_vars() http://xdebug.org/docs/all_functions#xdebug_get_declared_vars。确保您设置了xdebug.collect_vars在 xdebug 中打开.ini file.

Example:

<?php
    class strings {
        static function fix_strings($a, $b) {
            foreach ($b as $item) {
            }
            var_dump(xdebug_get_declared_vars());
        }
    }
    strings::fix_strings(array(1,2,3), array(4,5,6));
?>

Returns:

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'item' (length=4)

Example from xdebug.org http://xdebug.org/docs/all_functions#xdebug_get_declared_vars

请注意,该函数仅返回该函数所在范围内的变量xdebug_get_declared_vars()被叫进来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在每个 PHP 回溯级别获取范围内的变量? 的相关文章