PHP - Funzione Ds \ Hashable :: hash ()

La funzione Ds \ Hashable :: hash () può restituire un valore scalare da utilizzare come valore hash.

Sintassi

public abstract mixed Ds\Hashable::hash( void )

La funzione Ds \ Hashable :: hash () può restituire un valore scalare da utilizzare come valore hash degli oggetti.

Anche se il valore hash non definisce l'uguaglianza, tutti gli oggetti uguali secondo la funzione Ds \ Hashable :: equals () devono avere lo stesso valore hash. I valori hash di oggetti uguali non devono essere univoci. Ad esempio, possiamo semplicemente restituire true per tutti gli oggetti e nulla può rompersi. L'unica implicazione è che le tabelle hash si trasformano in elenchi collegati perché tutti i nostri oggetti possono essere sottoposti ad hashing nello stesso bucket. Pertanto, è molto importante che possiamo scegliere un buon valore hash come ID o indirizzo e-mail.

La funzione Ds \ Hashable :: hash () può consentire l'utilizzo di oggetti come chiavi in ​​strutture come Ds \ Map e Ds \ Set, o qualsiasi altra struttura di ricerca che rispetti questa interfaccia.

Esempio

<?php
   class HashableObject implements \Ds\Hashable {
      private $name;
      private $email;

      public function __construct($name, $email) {
         $this->name  = $name;
         $this->email = $email;
      }
      public function hash() {
         return $this->email;
      }
      public function equals($obj): bool {
         return $this->name === $obj->name && $this->email === $obj->email;
      }
   }
?>