ホームページ >バックエンド開発 >PHPチュートリアル >継承せずに PHP オブジェクトを効率的にマージするにはどうすればよいですか?

継承せずに PHP オブジェクトを効率的にマージするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-19 21:36:10535ブラウズ

How Can I Efficiently Merge PHP Objects Without Inheritance?

PHP オブジェクトの効率的なマージ

継承関係を示さない PHP5 オブジェクトを操作する場合、その内容をマージするのが難しい場合があります。従来のサブクラスベースのソリューションは、このシナリオには適用できません。

問題ステートメント

次のオブジェクトを考慮してください。

$objectA->a;
$objectA->b;
$objectB->c;
$objectB->d;

目標は、次のことを取得することです。 3 番目のオブジェクト $objectC には、$objectA のすべてのプロパティが含まれており、 $objectB.

$objectC->a;
$objectC->b;
$objectC->c;
$objectC->d;

解決策

オブジェクトをマージする最も効率的な方法は、(array) を使用してオブジェクトを配列にキャストし、array_merge() を使用してマージすることです。 。マージされた配列は、(object):

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

を使用してオブジェクトにキャストバックできます。この手法は、PHP 5.3 と 5.6 の両方でテストされているように、オブジェクトにメソッドがある場合でも効果的に機能します。

備考

  • オブジェクトにはフィールドのみが含まれ、フィールドは含まれないと想定されています。
  • foreach メソッドは、多数のフィールドを持つオブジェクトの場合は速度が低下するため、パフォーマンス上の理由から避けられます。
  • オブジェクトを配列に変換したり、その逆に戻したりするのは面倒に思えるかもしれませんが、これが最も効率的な解決策です。

以上が継承せずに PHP オブジェクトを効率的にマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。