这似乎也是在 contains() 函数中使用的函数,因此如果您要存储的所有对象都已具有唯一的 ID,则可以使用您自己的类覆盖此函数。
<?php
class UserStorage extends SPLObjectStorage{
public function getHash($obj){
return $obj->id;
}
}
$us = new UserStorage();
$user1 = new User(1);
$user2 = new User(2);
$us->attach($user1);
$us->attach($user2);
$me = new User(2);
// 以下内容通常会失败,因为它们是两个不同的对象
// 但现在它与我们扩展的 getHash() 一起工作了
$us->contains($me);
?>