3 回答

TA贡献1784条经验 获得超8个赞
如果您的对象只包含字段(无方法),则可以:
$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);
当对象具有方法时,这实际上也有效。(使用PHP 5.3和5.6测试)

TA贡献1911条经验 获得超7个赞
如果您的对象只包含字段(无方法),则可以:
$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);

TA贡献1829条经验 获得超4个赞
您可以创建另一个对象,将对魔术方法的调用分派给底层对象。这是你的处理方式__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;
}
}
}
祝好运。
- 3 回答
- 0 关注
- 1114 浏览
添加回答
举报