在每个 PHP 回溯级别获取范围内的变量?
有没有办法在回溯中查看每个堆栈帧中设置的变量?我可以非常接近地使用 debug_backtrace(true)
的组合来获取对象,在每个对象上使用 get_object_vars
来获取 $this vars、args
> 在每个回溯帧中键入,并使用 get_define_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);
}
我可以通过回溯中的args
键获取$foo
和$bar
, $bar
到 get_object_vars
的对象变量,以及通过 get_define_vars
的全局变量。我还想要获取$temp2
和$temp
的值。
Is there a way to view the variables set in each stack frame in a backtrace? I can come pretty close with a combination of debug_backtrace(true)
to get the objects, get_object_vars
on each object to get $this vars, the args
key in each backtrace frame, and get_defined_vars
to get globals, but any temporary variables set within a function I can't find a way to retrieve.
Here's an example situation:
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
via the args
key in the backtrace, the object variables of $bar
through get_object_vars
, and the globals through get_defined_vars
. I want to get the value of $temp2
and $temp
as well.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在您的(本地)服务器上安装并启用 XDebug。然后使用
xdebug_get_declared_vars()
。确保在 xdebug.ini
文件中将xdebug.collect_vars
设置为 On。示例:
返回:
示例来自 xdebug.org
请注意,该函数只返回调用函数 xdebug_get_declared_vars() 范围内的变量。
Install and Enable XDebug on your (local) server. Then use
xdebug_get_declared_vars()
. Make sure that you setxdebug.collect_vars
to On in your xdebug.ini
file.Example:
Returns:
Example from xdebug.org
Note, that the function only returns variables in the scope where the function
xdebug_get_declared_vars()
is called in.更改您的调试以采用 1 个参数。然后只需传入 get_defollow 即可。这将为您提供本地范围内所有变量的数组。
Alter your debug to take 1 param. Then just pass in get_defined_vars. This will give you an array of all the vars in the local scope.