PHP SPL SplObjectStorage 是用来存储一组对象的,特别是当你需要唯一标识对象的时候。
PHP SPL SplObjectStorage 类实现了 Countable,Iterator,Serializable,ArrayAccess 四个接口。可实现统计、迭代、序列化、数组式访问等功能。
类摘要
SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess {
/* 方法 */
public void addAll (SplObjectStorage $storage)
// ↓↓加入对象
public void attach (object $object [, mixed $data = NULL] )
// ↓↓检查是否包含指定对象
public bool contains (object $object)
// ↓↓移除对象
public void detach (object $object)
// ↓↓返回一串哈希值,每次调用的时候该串哈希值都在改变
public string getHash (object $object)
public mixed getInfo (void)
public int count (void)
public object current (void)
public int key (void)
public void next (void)
public bool offsetExists (object $object)
public mixed offsetGet (object $object)
public void offsetSet (object $object [, mixed $data = NULL] )
public void offsetUnset (object $object)
public void removeAll (SplObjectStorage $storage)
public void removeAllExcept (SplObjectStorage $storage)
public void rewind (void)
public string serialize (void)
public void setInfo (mixed $data)
public void unserialize (string $serialized)
public bool valid (void)
}
Example
# Example1:class A {
public $i;
public function __construct($i) {$this->i = $i;}
}
$a1 = new A(1);
$a2 = new A(2);
$a3 = new A(3);
$a4 = new A(4);
$container = new SplObjectStorage();
//SplObjectStorage::attach 添加对象到 Storage 中
$container->attach($a1);
$container->attach($a2);
$container->attach($a3);
//SplObjectStorage::detach 将对象从 Storage 中移除
$container->detach($a2);
//SplObjectStorage::contains 用于检查对象是否存在 Storage 中
var_dump($container->contains($a1)); //true
var_dump($container->contains($a4)); //false
// 遍历
$container->rewind();
while($container->valid()) {var_dump($container->current());
var_dump($container->getInfo());
$container->next();}
参考
http://php.net/manual/zh/clas…