どもです。
昨日に引き続き、デバックするのに便利そうなPHPの小技。
頻繁にひっぱりだこな関数だと、
どこから呼び出されたのかソースから探るのは難しい。
ので、関数がどこから実行されたか探るコマンド。
$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
print_r($debug_backtrace_one["file"]." : ".$debug_backtrace_one["line"]."<br>");
}
関数名もあった方が便利かもしれない。お好みで。
$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
print_r($debug_backtrace_one["file"].".".$debug_backtrace_one["function"]." : ".$debug_backtrace_one["line"]."<br>");
}
debug_backtrace()というのが今回のミソ。
関数がどこから実行されたか、最後から順に辿って配列に納めていく関数です。
ただ、単にdebug_backtrace()を出力するだけでは
ソース次第ではもう大量のデータが書き出されてブラウザが止まりかねないし見辛い。
ので、いちど配列に格納して、ファイル名["file"]と行数["line"]のみ出力。
ちなみに全データ出力ならvar_dump(debug_backtrace())で良いですが、
確実に見辛いのでちょっと整形してみました。
$debug_backtrace_ = debug_backtrace();
foreach ($debug_backtrace_ as $debug_backtrace_one){
print_r(
"関数名:".$debug_backtrace_one["function"]."<br>".
"行番号:".$debug_backtrace_one["line"]."<br>".
"ファイル名:".$debug_backtrace_one["file"]."<br>".
"クラス:".$debug_backtrace_one["class"]."<br>".
"オブジェクト:".$debug_backtrace_one["object"]."<br>".
"コール方式:".$debug_backtrace_one["type"]."<br>".
"関数の引数のリスト:".$debug_backtrace_one["args"]."<br>".
"************************************************************<br>"
);
}