The SplObjectStorage class

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

Introduction

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.

Class synopsis

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
}

Examples

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

Table of Contents

To Top