Php debug_backtrace()捕获函数参数的什么状态?
一些抽象代码:Php debug_backtrace()捕获函数参数的什么状态?,php,debugging,debug-backtrace,Php,Debugging,Debug Backtrace,一些抽象代码: function test($a = 5) { debug_backtrace(); a = 10; } 关于测试函数的参数,调试跟踪会告诉我们什么 如果我们以这种方式调用示例中的函数,它会将$a捕获为5还是10?: test(4); test(); 它将捕获“4” 如果我们这样称呼它: test(4); test(); 它实际上不会捕获关于参数的任何数据。我想,若参数并没有在任何地方使用过,解析器就不会初始化参数。(调用debug_backtrace不算在内。
function test($a = 5) {
debug_backtrace();
a = 10;
}
关于测试函数的参数,调试跟踪会告诉我们什么
如果我们以这种方式调用示例中的函数,它会将
$a
捕获为5还是10?:
test(4);
test();
它将捕获“4”
如果我们这样称呼它:
test(4);
test();
它实际上不会捕获关于参数的任何数据。我想,若参数并没有在任何地方使用过,解析器就不会初始化参数。(调用debug_backtrace不算在内。)我做了更多的研究,如果通过引用传递参数,结果有点出乎意料(对我个人来说)。。。但我承认,这是合乎逻辑的。
如果我们使用以下代码:
<?php
function test2(&$a) {
$a = 5;
test($a);
$a = 8;
}
function test(&$a) {
$a = 6;
print_r(debug_backtrace());
$a = 7;
}
$test = 1;
test2($test);
因此,debug_backtrace()始终打印引用传递的函数参数的当前状态(实际调用debug_backtrace()时),无论它们在父函数调用中是否有其他值。调试时要小心!:) 如果我们以这种方式调用示例中的函数:
test(4);
test();
它将捕获“4”
如果我们这样称呼它:
test(4);
test();
它实际上不会捕获关于参数的任何数据。我想,若参数并没有在任何地方使用过,解析器就不会初始化参数。(调用debug_backtrace不算在内。)我做了更多的研究,如果通过引用传递参数,结果有点出乎意料(对我个人来说)。。。但我承认,这是合乎逻辑的。
如果我们使用以下代码:
<?php
function test2(&$a) {
$a = 5;
test($a);
$a = 8;
}
function test(&$a) {
$a = 6;
print_r(debug_backtrace());
$a = 7;
}
$test = 1;
test2($test);
因此,debug_backtrace()始终打印引用传递的函数参数的当前状态(实际调用debug_backtrace()时),无论它们在父函数调用中是否有其他值。调试时要小心!:) 我想你不知道“伪代码”是什么意思。@Mad物理学家是的,谢谢,我的失败。。希望“抽象”更适合这种情况我想你不知道“伪代码”是什么意思。@MadPhysicator是的,谢谢,我的失败。。希望“抽象”更适合这种情况你如何调试调试?@MadPhysician,ehm,打扰一下?你如何调试调试?@MadPhysician,ehm,打扰一下?