Der Vergleich der Beziehung zwischen Objekten ist eine gemeinsame Operation bei der Entwicklung objektorientierter PHP-Anwendungen, insbesondere bei der Beurteilung, ob zwei Objekte gleich sind. In diesem Artikel werden eingehende Methoden und Prinzipien des Objektvergleichs in PHP untersucht.
In PHP können wir Vergleichsoperatoren (z. B. ==,! =, ===,! ==) verwenden, um Objekte zu vergleichen. Diese Operatoren können helfen, festzustellen, ob zwei Objekte gleich sind, zum gleichen Typ gehören und denselben Wert enthalten. Hier finden Sie eine detaillierte Beschreibung jedes Vergleichsbetreibers:
Bei Verwendung des Operators "==" vergleicht PHP, ob die Eigenschaftswerte der beiden Objekte gleich sind. Geben Sie true zurück, wenn dieselbe, ansonsten false zurückgeben.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Zhang San';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo 'Zwei Objekte sind gleich';
} else {
echo 'Zwei Objekte sind nicht gleich';
}
In dem obigen Code, da die Attributwerte der beiden Objekte gleich sind, sind die Ausgabe "zwei Objekte gleich".
Der Operator "! =" Wird verwendet, um zu überprüfen, ob die Attributwerte von zwei Objekten nicht gleich sind. Rückgabe true, wenn nicht gleich, ansonsten false zurück.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = 'Zhang San';
$obj1->age = 20;
$obj2->name = 'Li Si';
$obj2->age = 30;
if ($obj1 != $obj2) {
echo 'Die Attributwerte der beiden Objekte sind nicht gleich';
} else {
echo 'Die Attributwerte von zwei Objekten sind gleich';
}
Da die Attributwerte der beiden Objekte unterschiedlich sind, gibt der Code "die Attributwerte der beiden Objekte nicht gleich" aus. "
Der Operator "===" wird verwendet, um zu überprüfen, ob zwei Objekte das gleiche Objekt sind, d. H. Ob sie auf dieselbe Speicheradresse verweisen.
$obj1 = new stdClass();
$obj2 = $obj1;
if ($obj1 === $obj2) {
echo 'Zwei Objekte sind dasselbe Objekt';
} else {
echo 'Zwei Objekte sind nicht dasselbe Objekt';
}
Da $ OBJ2 im obigen Code auf die Speicheradresse von $ OBJ1 verweist, sind die Ausgabe "zwei Objekte das gleiche Objekt".
Der Operator "! Geben Sie True zurück, wenn sie auf verschiedene Speicheradressen hinweisen, ansonsten false zurückgeben.
$obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();
if ($obj1 !== $obj3) {
echo 'Zwei Objekte sind nicht dasselbe Objekt';
} else {
echo 'Zwei Objekte sind dasselbe Objekt';
}
Da $ OBJ1 und $ OBJ3 auf verschiedene Speicheradressen hinweisen, gibt der Code "zwei Objekte nicht dasselbe Objekt" aus.
Wenn PHP einen Objektvergleich ausführt, wird die Methode des Objekts __toString () standardmäßig aufgerufen, um das Objekt in eine Zeichenfolge umzuwandeln und es dann zu vergleichen. Wenn das Objekt die Methode __toString () nicht implementiert, wird ein tödlicher Fehler erzeugt. Um dieses Problem zu vermeiden, wird empfohlen, sicherzustellen, dass das Objekt die Methode bei Objektvergleiche implementiert.
Es ist zu beachten, dass PHP die Attributwerte des Objekts vergleichen, die Methoden jedoch nicht vergleichen, wenn sie Objekte vergleicht. Wenn die beiden Objekte die gleichen Eigenschaften haben, aber unterschiedliche Methoden, betrachtet PHP sie weiterhin als gleich.
In diesem Artikel werden gemeinsame Methoden zum Vergleich von Objekten in PHP- und verwandten Operatoren eingeführt (==,! =, ==,! ==). Beim Vergleich von Objekten sollten wir uns auf die Eigenschaftswerte des Objekts und nicht auf die Unterschiede in den Methoden konzentrieren. Stellen Sie gleichzeitig sicher, dass das Objekt die Methode __toString () implementiert, um Fehler während des Vergleichs zu vermeiden.