Services webmasters
Partenaires
Jeux concours gratuits
 
Comparer des objets en PHP 4
<<<
Comparer des objets en PHP 4 Référence
>>>

4.9 Les classes et les objets
4 Référence
 Manuel PHP

Les classes : class
extends : héritage
Constructor : constructeur
Opérateur ::
parent
Sauvegarde d'objets - cas des sessions
Les fonctions magiques __sleep et __wakeup
Références dans un constructeur
Comparer des objets en PHP 4
->Comparer des objets en PHP 4

4.9.10 Comparer des objets en PHP 4

Attention

Ce module est EXPERIMENTAL . Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

En PHP 5, la comparaison d'objets et plus compliquée qu'en PHP 5, afin d'être plus proche du comportement des langages orienté 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 si ils ont les mêmes attributs et valeurs, et qu'ils sont des instances de la même classe, dans le même espace de nom.

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

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

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 {
    var $flag;

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

namespace Other {

    class Flag {
        var $flag;

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

}

$o = new Flag();
$p = new Flag();
$q = $o;
$r = new Other::Flag();

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 de même nom, mais dans des espaces de noms différents\n";
compareObjects($o, $r);
Cet exemple va afficher :
Deux instances de la même classe
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Deux références sur le même objet
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Instances de classes de même nom, mais dans des espaces de noms différents
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

<< Comparer des objets en PHP 4 >>
Comparer des objets en PHP 4 Les classes et les objets Référence
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -