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
public function SplObjectStorage::count(int $mode = COUNT_NORMAL): int
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::rewind(): void
public function SplObjectStorage::seek(int $offset): void
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