La classe SplObjectStorage

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

Introduction

La classe SplObjectStorage fournit une carte d'objets ou de données, ou encore, en ignorant les index, un ensemble d'objets. Ce double objectif est utile dans de nombreuses situations, où il faut identifier de manière unique des objets.

Synopsis de la 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
}

Exemples

Exemple #1 Exemple avec SplObjectStorage, sous forme d'ensemble d'objets

<?php
// Un ensemble d'objets
$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));
?>

L'exemple ci-dessus va afficher :

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

Exemple #2 Exemple avec SplObjectStorage, sous forme de carte

<?php
// Une carte d'objets
$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]);
}
?>

L'exemple ci-dessus va afficher :

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

Sommaire

To Top