给定以下类层次结构:
class ParentClass {
private static $_test;
public function returnTest() {
return static::$_test;
}
}
class ChildClass extends ParentClass {
// intentionally left blank
}
$child = new ChildClass();
echo $child->returnTest();
生成的输出是以下错误消息:
Fatal error: Cannot access property ChildClass::$_test
有没有办法防止后期静态绑定发生?因为我正在调用一个未被覆盖的父类的函数,所以我觉得我应该被允许做类似上面的事情。
答案 0 :(得分:2)
您正在从实例化的类中调用静态属性。只需使用该类的名称:
return static::$_test;
答案 1 :(得分:2)
使用return self::$_test
代替return static::$_test
。
这可以确保您访问定义了$_test
的类的字段returnTest
。
请参阅http://www.php.net/manual/en/language.oop5.late-static-bindings.php以供参考。