致命错误:访问未声明的静态属性:


Fatal error: Access to undeclared static property:

我写了两个类,第二个扩展了第一个,当我尝试使用它时,我得到了这个错误:

致命错误:访问未声明的静态属性:

代码逻辑:

class foo
{
    public static function fooFunc()
    {
        return self::$fooVar;
    }
}
class bar extends foo
{
    protected static $fooVar = 'Hello World';
}
bar::fooFunc();

如何使其发挥作用?

static:替换self

class foo
{
    public static function fooFunc()
    {
        return static::$fooVar;
    }
}
class bar extends foo
{
    protected static $fooVar = 'Hello World';
}
bar::fooFunc();


此外,在foo类中添加一个"默认变量"是一个好主意,以防您忘记在子类中定义静态变量:

class foo
{
    protected static $fooVar = 'Default Text';
    public static function fooFunc()
    {
        return static::$fooVar;
    }
}