(PHP 5 >= 5.1.0, PHP 7, PHP 8)
The SplObjectStorage class provides a map from objects to data or, by ignoring data, an object set. This dual purpose can be useful in many cases involving the need to uniquely identify objects.
public addAll(SplObjectStorage $storage): int
#[\Deprecated] public attach(object $object, mixed $info = null): void
#[\Deprecated] public contains(object $object): bool
public count(int $mode = COUNT_NORMAL): int
public current(): object
#[\Deprecated] public detach(object $object): void
public getHash(object $object): string
public getInfo(): mixed
public key(): int
public next(): void
public offsetExists(object $object): bool
public offsetGet(object $object): mixed
public offsetSet(object $object, mixed $info = null): void
public offsetUnset(object $object): void
public removeAll(SplObjectStorage $storage): int
public removeAllExcept(SplObjectStorage $storage): int
public rewind(): void
public seek(int $offset): void
public serialize(): string
public setInfo(mixed $info): void
public unserialize(string $data): void
public valid(): bool}
Example #1 SplObjectStorage as a set
<?php // As an object set $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)); ?>
The above example will output:
bool(true) bool(true) bool(false) bool(true) bool(false) bool(false)
Example #2 SplObjectStorage as a map
<?php
// As a map from objects to data
$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]);
}
?> The above example will output:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
| Version | Description |
|---|---|
| 8.4.0 | Implement SeekableIterator, previously only Iterator was implemented. |
© 1997–2025 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/class.splobjectstorage.php