有没有办法在回溯中查看每个堆栈帧中设置的变量?我可以使用debug_backtrace(true)
来获取对象,get_object_vars
组合每个对象以获得$ this vars,每个回溯帧中的args
键以及{{1}获取全局变量,但在函数中设置的任何临时变量我都找不到检索方法。
以下是一个示例情况:
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);
}
键获取$foo
和$bar
,args
到{{1}的对象变量通过$bar
的全局变量。我想要来获取get_object_vars
和get_defined_vars
的价值。
答案 0 :(得分:1)
在(本地)服务器上安装并启用XDebug。然后使用xdebug_get_declared_vars()
。确保在xdebug xdebug.collect_vars
文件中将.ini
设置为开。
<?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));
?>
array
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'item' (length=4)
的示例
注意,该函数仅返回调用函数xdebug_get_declared_vars()
的范围内的变量。
答案 1 :(得分:-1)
改变你的调试以获得1个参数。然后传入get_defined_vars。这将为您提供本地范围内所有变量的数组。