基本クラスでメソッドを 1 回定義し、クラス階層内の連続するコンストラクターでそれを呼び出したいと考えています。呼び出されるたびに、呼び出し元のクラスのプロパティを操作したいと考えています。
たとえば、A は基本クラスで、メソッドはここで定義されています。B は A から継承し、C は B から継承します。
具象クラス C をインスタンス化すると、コンストラクターは基本クラス メソッドを呼び出し、C のプロパティで動作するようにします (これは、初期化時に入力するプライベート配列になります)。
次に、C のコンストラクターが を呼び出しますparent::__construct
。B コンストラクターが基底クラスのメソッドを呼び出すとき、メソッドは B のプロパティを操作する必要があります。B コンストラクターが完了する前に を呼び出しparent::_construct
、A コンストラクターが A のプロパティを操作します。
parent::__construct
LSB を調べていましたが、転送呼び出しのため正しく動作しません。get_parent_class()
in の代わりにの結果を使用しようとしました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();