我想在基类中定义一次方法,并在类层次结构中的后续构造函数中调用它。每次调用它时,我希望它对调用它的类的属性进行操作。
例如,a是基类,这里定义了方法。B从A继承,C从B继承。
当我实例化具体的类c时,构造函数将调用基类方法,我希望它对c的属性进行操作(这将是一个私有数组,我将在初始化时填充它)。
然后,c的构造函数调用parent::__construct。当b构造函数调用基类方法时,该方法应该对b的属性进行操作。在b构造函数完成之前,它将调用parent::_construct,而a构造函数将对a的属性进行操作。
我在调查lsb,但它不能正常工作,因为parent::__construct是一个转发呼叫。我试着用get_parent_class()的结果代替parent::,但是我对static::propertyName的调用出错了,因为propertyName不是常量。
我该怎么做?
编辑:下面是一个代码示例。下面的代码输出“pqpqpq”。我要它输出“pqrstu”。

class A {
    private $property = array('P','Q');

    function __construct() {
        $this->myMethod();
    }

    public function myMethod() {
        foreach ($this->property as $value) {
            echo $value . " ";
        }
    }
}

class B extends A {
    private $property = array('R','S');

    function __construct()
    {
        parent::__construct();
        $this->myMethod();
    }
}

class C extends B {
    private $property = array('T','U');

    function __construct()
    {
        parent::__construct();
        $this->myMethod();
    }
}

$c = new C();

最佳答案

据我所知这是不可能的。在private的情况下,变量对方法不可用,在public/protected的情况下,变量被覆盖。
通过考试你能得到你想要的结果

$this->property

在每个mymethod调用中-
$this->myMethod($this->property)

并相应地更改mymethod定义。

10-07 13:22
查看更多