请参阅以下示例(摘自上一个问题):
class ClassA {
public static function test(){ self::getVar(); }
public static function getVar(){ echo 'A'; }
}
class ClassB extends ClassA {
public static function getVar(){ echo 'B'; }
}
ClassA::test(); // prints 'A'
ClassB::test(); // also prints 'A'
有没有办法让B
来电test()
,self
会调用B
的{{1}}函数?
答案 0 :(得分:5)
您所谈论的内容称为Late Static Binding,自PHP 5.3开始提供。您需要做的就是使用static
而不是self
:
class ClassA {
public static function test() { return static::getVar(); }
}
class ClassB extends ClassA {
public static function getVar() { return 'B'; }
}
echo ClassB::test(); // prints 'B'