我想获得在子类中重新声明的静态var的值:
class A {
private static $echo_var = 'PARENT_ECHO' ;
public static function e() {
return '$echo_var = ' . self::$echo_var ;
}
}
class B extends A {
private static $echo_var = 'CHILD_ECHO';
}
echo B::e();
我想要CHILD_ECHO。
感谢, Mottenmann
答案 0 :(得分:6)
访问时使用静态关键字:
return '$echo_var = ' . static::$echo_var ;
它被称为late static binding。但它不适用于私人会员。你必须公开或保护它。私有属性只能在定义它们的类中访问。
答案 1 :(得分:3)
有3个错误:
ECHO
是保留名称。protected
代替private
static
代替self
class A
{
protected static $echo_var = 'PARENT_ECHO' ;
public static function output()
{
return '$echo_var = ' . static::$echo_var ;
}
}
class B extends A
{
protected static $echo_var = 'CHILD_ECHO';
}
echo B::output();