array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'class.splobjectstorage.php', 1 => 'SplObjectStorage', ), 'up' => array ( 0 => 'spl.datastructures.php', 1 => 'Estructuras de datos', ), 'prev' => array ( 0 => 'splfixedarray.wakeup.php', 1 => 'SplFixedArray::__wakeup', ), 'next' => array ( 0 => 'splobjectstorage.addall.php', 1 => 'SplObjectStorage::addAll', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/spl/splobjectstorage.xml', ), 'extra_header_links' => array ( 'rel' => 'alternate', 'href' => '/manual/en/feeds/class.splobjectstorage.atom', 'type' => 'application/atom+xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
La clase SplObjectStorage proporciona una correspondencia de objetos de datos o, ignorando los datos, un conjunto de objetos. Este doble propósito puede ser útil en muchos casos relacionados con la necesidad de identificar objetos de forma única.
Ejemplo #1 SplObjectStorage como un conjunto
<?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));
?>
El resultado del ejemplo sería:
bool(true) bool(true) bool(false) bool(true) bool(false) bool(false)
Ejemplo #2 SplObjectStorage como un mapa
<?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]);
}
?>
El resultado del ejemplo sería:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }