(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplObjectStorage クラスは、オブジェクトをデータに対応させたり、 データを渡さずオブジェクトセットとして使用したりします。 これらはどちらも、オブジェクトを一意に特定したい場合に便利です。
例1 SplObjectStorage をセットとして使用
<?php
// オブジェクトセット
$s = new SplObjectStorage();
$o1 = new stdClass;
$o2 = new stdClass;
$o3 = new stdClass;
$s->attach($o1);
$s->attach($o2);
var_dump($s->contains($o1));
var_dump($s->contains($o2));
var_dump($s->contains($o3));
$s->detach($o2);
var_dump($s->contains($o1));
var_dump($s->contains($o2));
var_dump($s->contains($o3));
?>上の例の出力は以下となります。
bool(true) bool(true) bool(false) bool(true) bool(false) bool(false)
例2 SplObjectStorage をマップとして使用
<?php
// オブジェクトとデータを対応させます
$s = new SplObjectStorage();
$o1 = new stdClass;
$o2 = new stdClass;
$o3 = new stdClass;
$s[$o1] = "data for object 1";
$s[$o2] = array(1,2,3);
if (isset($s[$o2])) {
var_dump($s[$o2]);
}
?>上の例の出力は以下となります。
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
| バージョン | 説明 |
|---|---|
| 8.4.0 | 以前は Iterator を実装していましたが、 SeekableIterator を実装しました。 |