わかりました、これは奇妙なものです。私はそれを認識していますが、何らかの形で可能かどうか知りたいです。
目標は、クラスのメンバー オブジェクトを別のオブジェクトに置き換えることです。
class A
{
public $object;
public function __construct()
{
$this->object = new B($this); // added reference to A
}
}
class B
{
private $caller; // reference to A
private $myobject;
public function __construct($caller)
{
$this->myobject = new C();
$this->caller = $caller;
}
public function replace()
{
// here goes the topic code...
}
}
class C
{
// whatever...
}
$A = new A();
$A->object->replace();
// after calling the "replace" method, $A->object becomes the B's child C instance
私は次のようなことをしていることを知っています
$A->object->replace($A);
そしてBクラスで
public function replace($class)
{
$class->object=$this->myobject;
}
が最も簡単な方法ですが、毎回この参照パスを避けたいと思います...また、簡単な方法を探しているかどうかを尋ねることもありませんでした;)
どんなトリックでも大歓迎です。
専門家に感謝します。