我们有两个 PHP5 对象,希望将其中一个对象的内容合并到第二个对象中。它们之间没有子类的概念,因此下面主题中描述的解决方案无法适用。
[如何将 PHP 对象复制到不同的对象类型中][1]
//We have this:
$objectA->a;
$objectA->b;
$objectB->c;
$objectB->d;
//We want the easiest way to get:
$objectC->a;
$objectC->b;
$objectC->c;
$objectC->d;
备注:
你可以创建另一个对象,将对魔法方法的调用分派给底层对象。 下面是处理 __get
的方法,但要让它完全工作,你必须覆盖所有相关的魔法方法。 你可能会发现语法错误,因为我只是凭空输入的。
class Compositor {
private $obj_a;
private $obj_b;
public function __construct($obj_a, $obj_b) {
$this->obj_a = $obj_a;
$this->obj_b = $obj_b;
}
public function __get($attrib_name) {
if ($this->obj_a->$attrib_name) {
return $this->obj_a->$attrib_name;
} else {
return $this->obj_b->$attrib_name;
}
}
}
祝你好运。