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,打扰一下?