PHP Conference Japan 2024

Ds\Hashable::hash

(PECL ds >= 1.0.0)

Ds\Hashable::hash傳回一個純量值作為雜湊值

說明

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

傳回一個純量值,用作物件的雜湊值。

雖然雜湊值並未定義相等性,但所有根據 Ds\Hashable::equals() 判斷為相等的物件必須具有相同的雜湊值。相等物件的雜湊值不必是唯一的,例如,您可以為所有物件傳回 true 且程式碼不會出錯 - 唯一的影響是雜湊表會變成連結串列,因為所有物件都會被雜湊到同一個儲存桶。因此,選擇一個好的雜湊值非常重要,例如 ID 或電子郵件地址。

這個方法允許物件被用作像是 Ds\MapDs\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;
}
}
?>
新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top