くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

PHPで呼び出し元の関数名を取得する

2009-05-26 20:01:09 | SEまわり
呼び出し元の関数名を取得する方法。

何階層か上のクラスに log() メソッドを実装して、そこでいろいろメッセージをログファイルに出力するようにした。

子クラスにて log() をコールした際、そのクラス名は get_class() で取得できる。

欲を言うとメソッド名も欲しいので、__FUNCTION__ を出力するようにした。



が、こうすると常に関数名は "log()" になってしまって、出力する意味がない。

なんとか、log() を呼び出している場所がどこの関数/メソッドなのかを知る必要がある。


調べたところ、debug_backtrace() 関数が使えることが分かった。

この関数から戻ってくるデータ量が非常に大きいのが気になるが、とりあえず、

$bt = debug_backtrace();
$function = $bt[1]['function'];

とすれば、ひとつ前の関数名を取り出せた。


最新の画像もっと見る