Maison >développement back-end >tutoriel php >Comment puis-je fusionner efficacement des objets PHP sans héritage ?

Comment puis-je fusionner efficacement des objets PHP sans héritage ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-19 21:36:10535parcourir

How Can I Efficiently Merge PHP Objects Without Inheritance?

Fusion efficace d'objets PHP

Lorsque vous travaillez avec des objets PHP5 qui ne présentent pas de relations d'héritage, la fusion de leur contenu peut être un défi. Les solutions traditionnelles basées sur les sous-classes sont inapplicables dans ce scénario.

Énoncé du problème

Considérez les objets suivants :

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

L'objectif est d'obtenir un troisième objet, $objectC, qui contient toutes les propriétés de $objectA et $objectB.

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

Solution

La méthode la plus efficace pour fusionner des objets est de les convertir en tableaux à l'aide de (array), puis de les fusionner à l'aide de array_merge() . Le tableau fusionné peut ensuite être reconverti en un objet en utilisant (object) :

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

Cette technique fonctionne efficacement même si les objets ont des méthodes, comme testé dans PHP 5.3 et 5.6.

Remarques

  • On suppose que les objets contiennent uniquement des champs et aucun méthodes.
  • La méthode foreach est évitée pour des raisons de performances, car elle est plus lente pour les objets avec de nombreux champs.
  • La conversion d'objets en tableaux et inversement peut sembler lourde mais c'est la solution la plus efficace.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn