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)