spl_object_hash în PHP

Returnează un text unic care identifică un obiect, cât timp acel obiect există.

Sintaxă
spl_object_hash(object $object): string

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.