呼び出し元の関数名を取得する方法。
何階層か上のクラスに log() メソッドを実装して、そこでいろいろメッセージをログファイルに出力するようにした。
子クラスにて log() をコールした際、そのクラス名は get_class() で取得できる。
欲を言うとメソッド名も欲しいので、__FUNCTION__ を出力するようにした。
が、こうすると常に関数名は "log()" になってしまって、出力する意味がない。
なんとか、log() を呼び出している場所がどこの関数/メソッドなのかを知る必要がある。
調べたところ、debug_backtrace() 関数が使えることが分かった。
この関数から戻ってくるデータ量が非常に大きいのが気になるが、とりあえず、
$bt = debug_backtrace();
$function = $bt[1]['function'];
とすれば、ひとつ前の関数名を取り出せた。
何階層か上のクラスに log() メソッドを実装して、そこでいろいろメッセージをログファイルに出力するようにした。
子クラスにて log() をコールした際、そのクラス名は get_class() で取得できる。
欲を言うとメソッド名も欲しいので、__FUNCTION__ を出力するようにした。
が、こうすると常に関数名は "log()" になってしまって、出力する意味がない。
なんとか、log() を呼び出している場所がどこの関数/メソッドなのかを知る必要がある。
調べたところ、debug_backtrace() 関数が使えることが分かった。
この関数から戻ってくるデータ量が非常に大きいのが気になるが、とりあえず、
$bt = debug_backtrace();
$function = $bt[1]['function'];
とすれば、ひとつ前の関数名を取り出せた。