PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候。
PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口。可实现统计、迭代、序列化、数组式访问等功能。
看下面一个简单的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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()); $container ->next(); } |