此外,在
我写了两个类,第二个扩展了第一个,当我尝试使用它时,我得到了这个错误:
致命错误:访问未声明的静态属性:
代码逻辑:
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;
}
}