[PHP-users 31113] メソッドの静的呼び出しについて
bobchin
bobchin_ryu @ bb.excite.co.jp
2006年 12月 25日 (月) 10:10:18 JST
市橋(bobchin)といいます。
継承先で親クラスのメソッドを静的に呼び出した際に、
親クラス側で呼び出し元を特定できないかを考えていますが、
よい方法が浮かびません。
なにかヒントがあればと思い、投稿しました。
やりたいことは以下の通りです。
class ClassA {
function method()
{
// ここで「ClassB」を取得したい・・・
}
}
class ClassB extends ClassA {
}
ClassB::method()を呼び出したときに、親クラスClassA上で「ClassB」から
コールされたことを判断る方法(呼び出しもとのクラスが知りたい)です。
PHP4の場合は、debug_backtrace()を使用することで取得できましたが、
PHP5の場合は取得できませんでした。
class ClassA {
function method()
{
$d = debug_backtrace();
echo $d[0]['class'];
}
}
class ClassB extends ClassA {
}
「__CLASS__」を使用した場合は、常に記述した場所のクラスを返すようですので、
使用できませんでした。
また、静的に呼び出すので$thisも正しくしようできないように思います。
class ClassA {
function method()
{
echo __CLASS__; // ClassAを返す
}
}
市橋 <bobchin_ryu @ bb.excite.co.jp>
PHP-users メーリングリストの案内