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