我想在基类中定义一次方法,然后在类层次结构中的连续构造函数中调用它。每次调用它时,我都希望它对调用它的类的属性进行操作。
例如,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
不是常数。
我怎样才能做到这一点?
编辑:这是一个代码示例。下面的代码输出“PQPQP Q”。我希望它输出“PQRST U”。
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();