这似乎也是在 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);
?>