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

2022-08-30 06:13:09

我们有两个 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;

言论:

  • 这些是对象,而不是类。
  • 对象包含相当多的字段,因此前方会非常慢。
  • 到目前为止,我们考虑将对象A和B转换为数组,然后在重新转换为对象之前使用array_merge()将它们合并,但我们不能说我们为此感到自豪。

答案 1

如果您的对象仅包含字段(没有方法),则此方法有效:

$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);

当对象具有方法时,这实际上也有效。(使用 PHP 5.3 和 5.6 进行测试)


答案 2
foreach($objectA as $k => $v) $objectB->$k = $v;

推荐