PHP メソッドや関数の呼び出し元を調べる方法

更新:2018.12.26

目次

debug_backtrace()を使ってまとめて取得する方法

デバッグ用のメソッドや関数だったり、ログに出力された内容から該当処理を見つけたいときなど、 ある処理がどこから呼び出されているのか知りたいときがあります。

もともとPHPに用意されている「debug_backtrace()」関数を使用することで、呼び出し元のファイルやクラス名、関数、メソッド名を取得することができます。

function foo() {
    $dbg = debug_backtrace();
    var_dump($dbg);
}

「debug_backtrace()」の結果は連想配列になっていますので、必要な情報をキー指定で取得できます。

各キーの情報は下記のとおりです。

また、この構造で複数データが格納された状態になっていますので、URLにアクセスしてから呼び出されたすべてのファイル、クラス、メソッドをたどっていくことが可能です。

下記のようなコードなら、最初に呼び出された処理までさかのぼって表示することができます。

function foo() {
    $dbg = debug_backtrace();
    foreach ($dbg as $dbgrow) {
        echo $dbgrow['file'];
    }
}

自動的に定義される定数を使ってピンポイントで取得する方法

下記の、__FUNCTION__定数を使用すれば、呼び出した場所の関数名、行番号、ファイル名、クラス名を取得できます。

# 関数名、メソッド名を取得
echo __FUNCTION__;

# 行番号を取得
echo __LINE__;

# ファイル名を取得
echo __FILE__;

# クラス名を取得
echo __CLASS__;

まとめ

この様な処理をうまく利用すれば、デバッグの効率も良くなりそうですし、ログに記載する内容もより効果的な内容になりそうです。

PHP関連記事








これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]