Lors du développement d'applications PHP orientées objet, nous devons souvent comparer deux objets, comme déterminer s'ils sont égaux. Cet article explorera comment effectuer une comparaison d'objets en PHP et analysera en profondeur l'application de divers opérateurs de comparaison.
PHP fournit une variété d'opérateurs pour comparer des objets, tels que == ,! =, == ,! ==, qui sont utilisés pour déterminer si les valeurs d'attribut des objets sont égales, qu'ils soient le même objet ou ont des valeurs d'attribut différentes.
Les opérateurs de comparaison courants comprennent:
==
Dans l'exemple ci-dessus, comme les valeurs d'attribut de $ obj1 et $ obj2 sont les mêmes, la sortie "deux objets sont égaux".
L'opérateur ! = Est opposé à la fonction == et est utilisé pour déterminer si les valeurs d'attribut des deux objets ne sont pas égales. Renvoie true si les valeurs d'attribut ne sont pas égales, sinon renvoyez false .
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Li si';
$obj2->age = 30;
if ($obj1 != $obj2) {
echo 'Les valeurs d'attribut des deux objets ne sont pas égales';
} else {
echo 'Les valeurs d'attribut de deux objets sont égales';
}
Dans cet exemple, comme les valeurs d'attribut de $ obj1 et $ obj2 sont différentes, la sortie "Les valeurs d'attribut des deux objets ne sont pas égales".
L'opérateur === est utilisé pour déterminer si deux objets sont le même objet, c'est-à-dire s'ils pointent vers la même adresse mémoire. Renvoie true s'il s'agit du même objet, sinon renvoyez false .
$obj1 = new stdClass();
$obj2 = $obj1;
if ($obj1 === $obj2) {
echo 'Deux objets sont le même objet';
} else {
echo 'Deux objets ne sont pas le même objet';
}
Dans cet exemple, puisque $ obj2 pointe directement vers l'adresse mémoire de $ Obj1 , la sortie "deux objets sont le même objet".
L'opérateur ! == est symétrique à l'opérateur === et est utilisé pour déterminer si deux objets ne sont pas le même objet. Renvoie true si deux objets pointent vers différentes adresses de mémoire, sinon renvoyez false .
$obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();
if ($obj1 !== $obj3) {
echo 'Deux objets ne sont pas le même objet';
} else {
echo 'Deux objets sont le même objet';
}
Dans cet exemple, $ obj1 et $ obj3 pointent vers différentes adresses de mémoire, de sorte que la sortie "deux objets ne sont pas le même objet".
Lorsque PHP utilise l'opérateur de comparaison pour comparer les objets, la méthode __toString () de l'objet sera automatiquement appelée pour convertir l'objet en une chaîne à comparaison. Si l'objet n'implémente pas cette méthode, une erreur de «erreur fatale capable» sera lancée.
Par conséquent, lors de la comparaison des objets, il est recommandé de s'assurer que l'objet implémente la méthode __toString () , sinon elle entraînera une erreur. Il convient de noter que PHP compare les valeurs de propriété des objets, et non des méthodes.
Cet article présente comment comparer des objets dans PHP, y compris comment utiliser divers opérateurs à titre de comparaison. Lors de l'exécution de comparaisons d'objets, les développeurs doivent prêter attention aux valeurs de la propriété de l'objet et s'assurer que l'objet implémente la méthode __toString () pour éviter les erreurs.