Ds\Hashable::hash
Ds\Hashable::hash
(PECL ds >= 1.0.0)
Ds\Hashable::hash — Returns a scalar value to be used as a hash value.
描述
abstract public mixed Ds\Hashable::hash ( void )
返回要用作对象散列值的标量值。
尽管哈希值没有定义相等性,但根据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;
}
/**
* Should return the same value for all equal objects, but doesn't have to
* be unique. This value will not be used to determine equality.
*/
public function hash()
{
return $this->email;
}
/**
* This determines equality, usually during a hash table lookup to determine
* if the bucket's key matches the lookup key. The hash has to be equal if
* the objects are equal, otherwise this determination wouldn't be reached.
*/
public function equals($obj): bool
{
return $this->name === $obj->name
&& $this->email === $obj->email;
}
}
?>
← Ds\Hashable::equals
Sequence →