La comparaison de la relation entre les objets est une opération commune lors du développement d'applications PHP orientées objet, en particulier lors de la jugement si deux objets sont égaux. Cet article explorera les méthodes approfondies et les principes de comparaison des objets en PHP.
Dans PHP, nous pouvons utiliser des opérateurs de comparaison (tels que == ,! =, === ,! ==) pour comparer les objets. Ces opérateurs peuvent aider à déterminer si deux objets sont égaux, appartiennent au même type et contiennent la même valeur. Voici une description détaillée de chaque opérateur de comparaison:
Lorsque vous utilisez l'opérateur "==", PHP compare si les valeurs de propriété des deux objets sont les mêmes. Renvoie True si le même, sinon retournez false.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Zhang San';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo 'Deux objets sont égaux';
} else {
echo 'Deux objets ne sont pas égaux';
}
Dans le code ci-dessus, comme les valeurs d'attribut des deux objets sont les mêmes, la sortie "deux objets sont égaux".
L'opérateur "! =" Est utilisé pour vérifier si les valeurs d'attribut de deux objets ne sont pas égales. Renvoie True s'il n'est pas égal, 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';
}
Étant donné que les valeurs d'attribut des deux objets sont différentes, le code sortira "Les valeurs d'attribut des deux objets ne sont pas égales".
L'opérateur "===" est utilisé pour vérifier si deux objets sont le même objet, c'est-à-dire s'ils pointent vers la même adresse mémoire.
$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 le code ci-dessus, puisque $ obj2 pointe vers l'adresse mémoire de $ Obj1, la sortie "deux objets sont le même objet".
L'opérateur "! ==" est un opérateur symétrique de "===", utilisé pour déterminer si deux objets ne sont pas le même objet. Renvoie True s'ils 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';
}
Étant donné que $ obj1 et $ obj3 pointent vers différentes adresses de mémoire, le code sortira "deux objets ne sont pas le même objet".
Lorsque PHP effectue une comparaison de l'objet, il appellera la méthode __toString () de l'objet par défaut par défaut pour convertir l'objet en une chaîne, puis le comparer. Si l'objet n'implémente pas la méthode __toString () , une erreur fatale sera générée. Pour éviter ce problème, il est recommandé de s'assurer que l'objet implémente la méthode lors de la réalisation de comparaisons d'objets.
Il convient de noter que lorsque PHP compare les objets, il comparera les valeurs d'attribut de l'objet, mais ne comparera pas les méthodes. Si les deux objets ont les mêmes propriétés mais des méthodes différentes, PHP les considérera toujours comme égaux.
Cet article présente des méthodes communes pour comparer des objets dans PHP et les opérateurs connexes (== ,! =, == ,! ==). Lors de la comparaison des objets, nous devons nous concentrer sur les valeurs de propriété de l'objet, et non sur les différences de méthodes. Dans le même temps, assurez-vous que l'objet implémente la méthode __toString () pour éviter les erreurs pendant la comparaison.