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。