Ce face spl_object_hash
spl_object_hash face același lucru ca spl_object_id, dar returnează un text de 32 de caractere hexazecimale. Din PHP 8.1, textul este de fapt id-ul obiectului scris în hexazecimal, completat cu zerouri.
În cod nou, spl_object_id este mai simplu și mai rapid.
Parametri
| Parametru | Descriere |
|---|---|
$object |
Obiectul. |
Ce returnează
Un text de 32 de caractere.
Exemple
Exemplul 1: Hash-ul și id-ul unui obiect
<?php
$produs = new stdClass();
$acelasi = $produs;
echo spl_object_hash($produs) . "\n";
echo strlen(spl_object_hash($produs)) . " caractere\n";
var_dump(spl_object_hash($produs) === spl_object_hash($acelasi));
var_dump(hexdec(substr(spl_object_hash($produs), 0, 16)) === spl_object_id($produs));
Rezultat
00000000000000010000000000000000
32 caractere
bool(true)
bool(true)
Greșeli frecvente
- Folosești rezultatul ca token de securitate sau ca identificator unic între cereri. Este previzibil și se repetă de la o cerere la alta.
Comenzi înrudite
spl_object_id: Returnează un număr unic care identifică un obiect, cât timp acel obiect există.clone: Creează o copie a unui obiect. Fără clone, atribuirea unui obiect copiază doar referința către același obiect.