2

我想获取在子类中重新声明的静态变量的值:

    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。

谢谢,莫滕曼

4

2 回答 2

6

访问时使用static关键字:

return '$echo_var = ' . static::$echo_var ;

它被称为后期静态绑定。但它不适用于私人会员。您必须将其公开或受保护。私有属性只能在定义它们的类中访问。

于 2013-05-14T09:38:00.187 回答
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();
于 2013-05-14T09:42:54.903 回答