PHP/debug_backtrace関数の挙動

PHP/debug_backtrace関数の挙動

バージョンと製造年月日

  • 2011-08-04
  • PHP5.3

debug_backtraceとは

デバッグ時に重要な各種挙動の情報を連想配列の配列として取り出してくれる関数

むき出しで呼び出し

まったく関数等でガードされていない素のPHP上で単に呼び出した場合

print_r(debug_backtrace());

結果

Array()

つまりむき出しの場所では役にたたないのね。

単なる関数で呼び出し

function hoge($a, $b){
    print_r(debug_backtrace());
}
hoge(123, 456);

結果

Array
(
    [0] => Array             #配列の一番目に連想配列として情報が格納される
        (
            [file] => /piyo/fuga/hoge.php    #ファイルのフルパス
            [line] => 6                      #debug_backtraceが書いてある関数が呼び出された行数
                                             #      ※debug_backtraceが呼び出された位置ではない
            [function] => hoge               #呼び出された関数名
            [args] => Array                  #呼び出された関数に渡された引数の内容
                (
                    [0] => 123
                    [1] => 456
                )
        )
)

関数に呼ばれた関数で呼び出し

function hoge($a, $b){
    piyo($b, $a);
}
function piyo($a, $b){
    print_r(debug_backtrace());
}
hoge(123, 456);

結果

Array
(
    [0] => Array  #配列1番目はdebug_backtraceが書かれている関数情報
                  # 今回ならばpiyo関数
        (
            [file] => /fuga/piyo/hoge.php
            [line] => 8
            [function] => piyo
            [args] => Array
                (
                    [0] => 456
                    [1] => 123
                )
        )
    [1] => Array  #debug_backtraceが書かれている関数を呼び出している関数情報
                  # 今回ならばhoge関数
        (
            [file] => /fuga/piyo/hoge.php
            [line] => 11
            [function] => hoge
            [args] => Array
                (
                    [0] => 123
                    [1] => 456
                )
        )
)

つまり呼び出しのスタックを上から順番に表示している

参考サイト

タグ

php/function_debug_backtrace_behavior.txt · 最終更新: 2011-08-04 11:04 by ore