(PECL ds >= 1.0.0)
Ds\Hashable::hash — 傳回一個純量值作為雜湊值
傳回一個純量值,用作物件的雜湊值。
雖然雜湊值並未定義相等性,但所有根據 Ds\Hashable::equals() 判斷為相等的物件必須具有相同的雜湊值。相等物件的雜湊值不必是唯一的,例如,您可以為所有物件傳回 true
且程式碼不會出錯 - 唯一的影響是雜湊表會變成連結串列,因為所有物件都會被雜湊到同一個儲存桶。因此,選擇一個好的雜湊值非常重要,例如 ID 或電子郵件地址。
這個方法允許物件被用作像是 Ds\Map 和 Ds\Set 等結構中的鍵,或任何其他遵循此介面的查找結構。
不要選擇物件內可能變動的值,例如公開屬性。因為雜湊值已更改,雜湊表查找將會失敗。
所有相等的物件必須具有相同的雜湊值。
此函式沒有參數。
要用作此物件雜湊值的純量值。
範例 #1 Ds\Hashable::hash() 範例
<?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;
}
}
?>