PHP:使成员对象替换自身

PHP:使成员对象替换自身,php,class,object,replace,Php,Class,Object,Replace,好吧,这是一个奇怪的问题,我知道,但我想知道这是否有可能 目标是使一个类的成员对象用另一个对象替换自己 class A { public $object; public function __construct() { $this->object = new B($this); // added reference to A } } class B { private $caller; // reference to A private $myob

好吧,这是一个奇怪的问题,我知道,但我想知道这是否有可能

目标是使一个类的成员对象用另一个对象替换自己

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;
}
这将是最简单的方法,但我希望每次都避免这种参考通行证…而且我也不会问你我是否在寻找简单的方法;)

任何把戏都是受欢迎的


谢谢各位专家。

如果您能给我们一个真实的例子,说明您正在尝试做什么,我们可以为您推荐一个好的设计模式。但这听起来很奇怪。你问的根本不清楚——你说的替换是什么意思?你不能把你想要的东西放在
$A->object
字段中吗?我会的,但实际上我没有特定的模式要实现或示例要展示,我只是在努力寻找它是否可行,或者显示的简单方法是否真的是唯一可行的方法。是的,这很奇怪,这是一个挑战:)@moonwave99简言之,我想知道是否有可能将a->B->C到a->C的关系从B开始工作,替换代表从链中移除它……希望我解释一下我的意思。例如,将B作为包装类可能很有用。唯一可行的方法是B持有对a的引用。在您的示例中,情况并非如此,因此B无法找到包含此特定B的a。