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(以及所有其他脚本语言,我相信)使用相同的表来存储属性名称.这只是语言的限制.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...