ど素人から毛を生やす。<延>

PHPで関数がどこから実行されたか探る

Web > PHP 2017年6月13日(最終更新:7年前)

2017年6月13日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
昨日に引き続き、デバックするのに便利そうな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>"
	);
}

参考サイト
お名前.com、さくらのVPS等のサーバーでの開発・設定メモ
php.net

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)