微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 是否有可能获得父类的重写NON静态成员变量的值?

是否有可能获得父类的重写NON静态成员变量的值?

我知道要获取STATIC成员变量的值,您使用self :: $var1或ClassName :: $var1,但是如何获得NON静态成员变量的值?

例如…

class One
{
public $var1 = 'old var';
}

class Two extends One
{
    public $var1 = 'new var';

    public function getoldVar()
    {
        //somehow get old var
    }
}

非常感谢提前!

解决方法:

不.一旦你覆盖了非静态属性值,它就消失了.您不能像使用方法那样将parent :: Syntax与非静态属性一起使用.

但是,使用static关键字可以利用PHP的后期静态绑定功能来访问静态父属性,因为静态值绑定到分配它们的类:

class Top
{
  public static $prop = 'Parent';
}

class Child extends Top {
  public static $prop = 'Child';

  public static function getParentProp() {
    return parent::$prop;
  }

  public static function getProp() {
    return static::$prop;
  }
}

echo Child::getParentProp(); // outputs "Parent"
echo Child::getProp();       // outputs "Child"

请注意,您不能使用子类中的静态属性覆盖非静态属性来实现您正在尝试的内容,因为PHP(以及所有其他脚本语言,我相信)使用相同的表来存储属性名称.这只是语言的限制.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐