使用父函数的静态变量访问来防止后期静态绑定

时间:2013-02-07 17:49:27

标签: php late-static-binding

给定以下类层次结构:

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
有没有办法防止后期静态绑定发生?因为我正在调用一个未被覆盖的父类的函数,所以我觉得我应该被允许做类似上面的事情。

2 个答案:

答案 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以供参考。