我写了两个类,第二个扩展了第一个类,当我尝试使用它时,我得到了这个错误:
致命错误:访问未声明的静态属性:
代码逻辑:
class foo
{
public static function fooFunc()
{
return self::$fooVar;
}
}
class bar extends foo
{
protected static $fooVar = 'Hello World';
}
bar::fooFunc();
如何让它发挥作用?
答案 0 :(得分:3)
将self
替换为static
:
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;
}
}