(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.
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)
}