A classe SplObjectStorage

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

Introdução

A classe SplObjectStorage fornece um mapa de objetos para dados ou, ao ignorar os dados, um conjunto de objetos. Esse propósito duplo pode ser útil em muitos casos que envolvem a necessidade de identificar objetos de forma única.

Resumo da classe

classSplObjectStorageimplementsCountable, Iterator, Serializable, ArrayAccess {
publicaddAll(SplObjectStorage$storage): int
publicattach(object$object, mixed$info = null): void
publiccontains(object$object): bool
publiccount(int$mode = COUNT_NORMAL): int
publiccurrent(): object
publicdetach(object$object): void
publicgetHash(object$object): string
publicgetInfo(): mixed
publickey(): int
publicnext(): void
publicoffsetExists(object$object): bool
publicoffsetGet(object$object): mixed
publicoffsetSet(object$object, mixed$info = null): void
publicoffsetUnset(object$object): void
publicrewind(): void
publicserialize(): string
publicsetInfo(mixed$info): void
publicunserialize(string$data): void
publicvalid(): bool
}

Exemplos

Exemplo #1 SplObjectStorage como um conjunto

<?php
// Como um 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));
?>

O exemplo acima produzirá:

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

Exemplo #2 SplObjectStorage como um mapa

<?php
// Como um mapa de objetos para dados
$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]);
}
?>

O exemplo acima produzirá:

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

Índice

To Top