PHP SPL SplObjectStorage是用來存儲一組對象的,特別是當你需要唯一標識對象的時候。
PHP SPL SplObjectStorage類實現了Countable,Iterator,Serializable,ArrayAccess四個接口。可實現統計、迭代、序列化、數組式訪問等功能。
## 類摘要
```php
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
```php
# 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/class.splobjectstorage.php
- 現代化PHP特性
- php7常用特性整理
- 反射機制Reflection
- 依賴注入與服務容器
- 抽象類與接口
- 類多繼承的替代方案Traits
- 類的延遲綁定(后期綁定)
- 生成器語法
- 匿名函數和閉包
- 匿名類
- 理解php的output buffer
- 斷言ASSERT
- 魔術方法小結
- Zend Opcache字節碼緩存
- 內置的http服務器
- SPL標準庫
- 【SPL標準庫專題(1)】SPL簡介
- 【SPL標準庫專題(2)】Iterator
- 【SPL標準庫專題(3)】Classes
- 【SPL標準庫專題(4)】Exceptions
- 【SPL標準庫專題(5)】Datastructures:SplDoublyLinkedList
- 【SPL標準庫專題(6)】Datastructures:SplStack & SplQueue
- 【SPL標準庫專題(7)】Datastructures:SplPriorityQueue
- 【SPL標準庫專題(8)】Datastructures:SplHeap & SplMaxHeap & SplMinHeap
- 【SPL標準庫專題(9)】Datastructures:SplFixedArray
- 【SPL標準庫專題(10)】Datastructures:SplObjectStorage
- PHPcomposer使用手札[ing]
- PHP中的多態
- 通過命名空間實現自動加載的框架雛形
- 日期與金額
- PHPstorm使用攻略
- 筆記本