如何使用静态方法在其父类中使用子类的静态var

时间:2013-05-14 09:35:37

标签: php oop inheritance static static-binding

我想获得在子类中重新声明的静态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

2 个答案:

答案 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();
相关问题