我试图在不需要子类的功能的情况下完成此操作......这可能吗?我感觉不是,但我真的很想确定......
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); //returns B
?>
答案 0 :(得分:13)
使用get_called_class()
代替__CLASS__
。您还可以将static
替换为self
,因为该函数将通过后期绑定为您解析类:
class A {
public static function who() {
echo get_called_class();
}
public static function test() {
self::who();
}
}
class B extends A {}
B::test();