spl_object_hash
funkcja
Zwraca unikalny string (32 znaki hex) identyfikujący obiekt przez cały czas jego życia. Hash może być ponownie użyty po zniszczeniu obiektu.
spl_object_hash(object $object): string
spl_object_hash zwraca 32-znakowy ciąg szesnastkowy unikalny dla danej instancji w obrębie bieżącego procesu PHP. Dopóki obiekt istnieje, jego hash pozostaje stały — co odróżnia go od spl_object_id, które może zmienić się po garbage collection (choć w praktyce oba dzielą ten sam mechanizm ponownego użycia). Hash jest przydatny jako klucz w strukturach danych, gdy chcesz indeksować obiekty bez modyfikowania ich klas. Od PHP 7.2 preferuj spl_object_id — jest szybszy i tańszy jako klucz int.
<?php
declare(strict_types=1);
$a = new stdClass();
$b = new stdClass();
$c = $a; // alias — ten sam obiekt
$hashA = spl_object_hash($a);
$hashB = spl_object_hash($b);
$hashC = spl_object_hash($c);
var_dump($hashA); // string(32) "0000...000" (hex, 32 znaki)
var_dump($hashA === $hashC); // bool(true) — $a i $c to ten sam obiekt
var_dump($hashA === $hashB); // bool(false) — $b to odrębna instancja
// Prosty zestaw obiektów (SplObjectStorage to lepszy wybór do tego celu):
$zbior = [];
$zbior[$hashA] = $a;
var_dump(isset($zbior[spl_object_hash($a)])); // bool(true)