# La clase SplObjectStorage

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Introducción

La clase SplObjectStorage proporciona un mapa de objetos o de datos, o bien, ignorando los índices, un conjunto de objetos. Este doble propósito es útil en numerosas situaciones, donde es necesario identificar de manera única objetos.

## Sinopsis de la Clase

class SeekableSplObjectStorage implements Countable, Iterator, Serializable, ArrayAccess {
/* Métodos */
public function SplObjectStorage::addAll(SplObjectStorage `$storage`): int
#[\Deprecated]
public function SplObjectStorage::attach(object `$object`, mixed `$info` = null): void
#[\Deprecated]
public function SplObjectStorage::contains(object `$object`): bool
public function SplObjectStorage::count(int `$mode` = COUNT_NORMAL): int
public function SplObjectStorage::current(): object
#[\Deprecated]
public function SplObjectStorage::detach(object `$object`): void
public function SplObjectStorage::getHash(object `$object`): string
public function SplObjectStorage::getInfo(): mixed
public function SplObjectStorage::key(): int
public function SplObjectStorage::next(): void
public function SplObjectStorage::offsetExists(object `$object`): bool
public function SplObjectStorage::offsetGet(object `$object`): mixed
public function SplObjectStorage::offsetSet(object `$object`, mixed `$info` = null): void
public function SplObjectStorage::offsetUnset(object `$object`): void
public function SplObjectStorage::removeAll(SplObjectStorage `$storage`): int
public function SplObjectStorage::removeAllExcept(SplObjectStorage `$storage`): int
public function SplObjectStorage::rewind(): void
public function SplObjectStorage::seek(int `$offset`): void
public function SplObjectStorage::serialize(): string
public function SplObjectStorage::setInfo(mixed `$info`): void
public function SplObjectStorage::unserialize(string `$data`): void
public function SplObjectStorage::valid(): bool
}

## Ejemplos

Ejemplo #1 Ejemplo con SplObjectStorage, en forma de conjunto de objetos

    <?php
    // Un conjunto de objetos
    $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 ejemplo anterior mostrará:

    bool(true)
    bool(true)
    bool(false)
    bool(true)
    bool(false)
    bool(false)

Ejemplo #2 Ejemplo con SplObjectStorage, en forma de mapa

    <?php
    // Un mapa de objetos
    $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 ejemplo anterior mostrará:

    array(3) {
      [0]=>
      int(1)
      [1]=>
      int(2)
      [2]=>
      int(3)
    }

## Historial de cambios

Versión | Descripción
--- | ---
8.4.0 | Implementa SeekableIterator, anteriormente solo se implementaba la interfaz Iterator.

## Tabla de contenidos

- SplObjectStorage::addAll — Agrega todos los objetos de otro almacenamiento
- SplObjectStorage::attach — Agrega un objeto en el almacenamiento
- SplObjectStorage::contains — Comprueba si el almacenamiento contiene un objeto específico
- SplObjectStorage::count — Devuelve el número de objetos en el almacenamiento
- SplObjectStorage::current — Devuelve el objeto actual
- SplObjectStorage::detach — Quita un object del almacenamiento
- SplObjectStorage::getHash — Calcular un identificador único (hash) para los objetos contenidos
- SplObjectStorage::getInfo — Devuelve los datos asociados con la entrada del iterador actual
- SplObjectStorage::key — Devuelve el índice en el que se encuentra el iterador actualmente
- SplObjectStorage::next — Mover a la siguiente entrada
- SplObjectStorage::offsetExists — Comprueba si un objeto existe en el almacenamiento
- SplObjectStorage::offsetGet — Devuelve los datos asociados con un object
- SplObjectStorage::offsetSet — Asocia datos a un objeto en el almacenamiento
- SplObjectStorage::offsetUnset — Quita un objeto de el almacenamiento
- SplObjectStorage::removeAll — Remover objetos contenidos en otro almacenamiento de el almacenamiento actual
- SplObjectStorage::removeAllExcept — Remover objetos excepto los contenidos en otro almacenamiento del almacenamiento actual
- SplObjectStorage::rewind — Rebobina el iterador a el primer elemento de el almacenamiento
- SplObjectStorage::seek — Busca un iterador en una posición
- SplObjectStorage::serialize — Serializa el almacenamiento
- SplObjectStorage::setInfo — Establece los datos asociados con el iterador de la entrada actual
- SplObjectStorage::unserialize — Deserializa un almacenamiento desde su representación string
- SplObjectStorage::valid — Comprobar si la entrada actual del iterador es válida

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open