Mały przykład ilustrujący problem:
<?php class foo { } $f = new foo; $g = new foo; $h = $g; // $h jest referencją $g. To jest ta sama instancja. // $g i $f to różne instancje. ?>
Wynik uruchomienia powyższego kodu jest następujący:
Kod
object(foo)#1 (0) {
}
object(foo)#2 (0) {
}
object(foo)#2 (0) {
}
bool(true)
bool(true)
}
object(foo)#2 (0) {
}
object(foo)#2 (0) {
}
bool(true)
bool(true)
Jak widać z serii pierwszych trzech var_dump() PHP odróżnia instancje (identyfikator przy #) jednak nie sposób zrobić porównując instancje. Wynika to z tego, że PHP porównuje obiekty po typie i po zmiennych klasowych (których w przypadku przykładowej klasy nie ma).
Rozwiązałem już problem lecz wolałbym wykorzystać jakiś prostszy sposób.
Czy jest jakaś prosta metoda która identyfikowałaby instancje obiektów jednoznacznie?