合并两个PHP对象的最佳方法是什么?

我们有两个PHP5对象,并希望将一个内容合并到第二个。它们之间没有子类概念,因此以下主题中描述的解决方案无法应用。


如何将PHP对象复制到不同的对象类型中


//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;

备注:


这些是对象,而不是类。

这些对象包含很多字段,所以foreach会很慢。

到目前为止,我们考虑将对象A和B转换为数组,然后在重新转换为对象之前使用array_merge()合并它们,但我们不能说如果这样我们感到自豪。


弑天下
浏览 1088回答 3
3回答

青春有我

如果您的对象只包含字段(无方法),则可以:$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);当对象具有方法时,这实际上也有效。(使用PHP 5.3和5.6测试)

Smart猫小萌

如果您的对象只包含字段(无方法),则可以:$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);

浮云间

您可以创建另一个对象,将对魔术方法的调用分派给底层对象。这是你的处理方式__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;    }  }}祝好运。
打开App,查看更多内容
随时随地看视频慕课网APP