php 4.3以后新增了一个魔术常量__class__,用来获得当前class名称。但是在下面的代码中,却不work。
class a {
function showclass() {
echo __class__;
}
}
class b extends a {}
a::showclass();
b::showclass();
这段代码会打出两个a,而不是预想中的ab。
下面这段代码,利用debug_backtrace来获得当前class名,可惜只能在php4上面work,到了php5以上,测试结果全部都是aa-___-
class a {
function showclass() {
$backtrace = debug_backtrace();
echo $backtrace[0]['class'];
}
}
class b extends a {}
补充一个可以在php4/php5下work的代码
class a {
function showclass() {
$backtrace = debug_backtrace();
echo ((int)php_version> 4) ?
get_class($backtrace[0]['object']) : $backtrace[0]['class'];
}
}
class b extends a {}