1. ホーム
  2. php

[解決済み] 2つのPHPオブジェクトをマージするための最良の方法は何ですか?

2022-04-03 15:24:58

質問

2つの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() オブジェクトに再変換する前に、私たちはこれを自慢に思っているわけではありません。

どのように解決するのですか?

<ブロッククオート

オブジェクトがフィールドのみを含む(メソッドを含まない)場合、これは動作します。

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

これは実は、オブジェクトがメソッドを持つ場合にも有効です。(PHP 5.3 と 5.6 でテスト済み)