Duplication d'objets
<<<
Comparaison d'objets Réflexion
>>>

5.10 Les classes et les objets (PHP 5)
5 Référence du langage
 Manuel PHP

Introduction
Les notions de base
Auto-chargement de classes
Constructeurs et destructeurs
Visibilité
L'opérateur de résolution de portée (::)
Statique
Constantes
Abstraction d'objets
Interfaces
Surcharge
Les Itération
Masques
Méthodes magiques
Mot clé "final"
Duplication d'objets
->Comparaison d'objets
Réflexion
Typage optionnel des paramètres

5.10.17 Comparaison d'objets

En PHP 5, la comparaison d'objets est plus compliquée qu'en PHP 4 afin d'être plus proche du comportement des langages orientés objet (bien que PHP n'en soit pas un).

Lors de l'utilisation de l'opérateur de comparaison == , les objets sont comparées de manière simple, à savoir : deux objets sont égaux s'ils ont les mêmes attributs et valeurs, et qu'ils sont des instances de la même classe.

D'un autre coté, lors de l'utilisation de l'opérateur d'identité ( === ), les objets sont identiques uniquement s'ils font référence au même objet de la même classe.

Un exemple va illustrer ces règles.
Exemple de comparaison d'objets en PHP 5

<?php
function bool2str($bool)
{
    if (
$bool === false) {
            return
'FALSE';
    } else {
            return
'TRUE';
    }
}

function
compareObjects(&$o1, &$o2)
{
    echo
'o1 == o2 : '.bool2str($o1 == $o2)."\n";
    echo
'o1 != o2 : '.bool2str($o1 != $o2)."\n";
    echo
'o1 === o2 : '.bool2str($o1 === $o2)."\n";
    echo
'o1 !== o2 : '.bool2str($o1 !== $o2)."\n";
}

class
Flag
{
    
public $flag;

    function
Flag($flag = true) {
            
$this->flag = $flag;
    }
}

class
OtherFlag
{
    
public $flag;

    function
OtherFlag($flag = true) {
            
$this->flag = $flag;
    }
}

$o = new Flag();
$p = new Flag();
$q = $o;
$r = new OtherFlag();

echo
"Deux instances de la même classe\n";
compareObjects($o, $p);

echo
"\nDeux références sur le même objet\n";
compareObjects($o, $q);

echo
"\nInstances de classes différentes\n";
compareObjects($o, $r);
?>

<< Comparaison d'objets >>
Duplication d'objets Les classes et les objets (PHP 5) Réflexion