php 4.3 以降では、現在のクラス名を取得するために使用される新しいマジック定数 __CLASS__ が追加されました。しかし、以下のコードでは機能しません。
クラス A {
関数 showclass() {
echo __CLASS__;
}
}
クラス B は A を拡張します {}
A::showclass();
B::showclass();
このコードは、予期される AB の代わりに 2 つの A を出力します。
次のコードは debug_backtrace を使用して現在のクラス名を取得します。残念ながら、php5 以降でのみ動作します。テスト結果はすべて AA-___-
です。 class A { function showclass() { $backtrace = debug_backtrace();
echo $backtrace[0]['class'];
}
}
class B extends A {}
php4/php5で動作するコードを追加します
function showclass() { $backtrace = debug_backtrace();
echo ((int)PHP_VERSION> 4) ?
get_class($backtrace[0]['object']) : $backtrace[0] ['クラス'];
}
}
クラス B は A {} を拡張します