# La classe SplObjectStorage

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

## Introduction

La classe SplObjectStorage fournit une carte allant des objets vers des données, ou encore, en ignorant les données, 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

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

## Historique

Version | Description
--- | ---
8.4.0 | Implémente SeekableIterator, auparavant seule l’interface Iterator était implémentée.

## Sommaire

- SplObjectStorage::addAll — Ajoute tous les objets d'un autre stockage
- SplObjectStorage::attach — Ajoute un objet dans le stockage
- SplObjectStorage::contains — Vérifie si un stockage contient un objet
- SplObjectStorage::count — Retourne le nombre d'objets dans le stockage
- SplObjectStorage::current — Retourne l'objet courant
- SplObjectStorage::detach — Retire un objet du stockage
- SplObjectStorage::getHash — Calcule un identifiant unique pour les objets contenus
- SplObjectStorage::getInfo — Retourne les données associées à l'élément en cours
- SplObjectStorage::key — Retourne l'index de l'objet courant
- SplObjectStorage::next — Passe au prochain élément
- SplObjectStorage::offsetExists — Vérifie si un objet existe dans le stockage
- SplObjectStorage::offsetGet — Retourne les données associées à un objet
- SplObjectStorage::offsetSet — Associe des données à un stockage
- SplObjectStorage::offsetUnset — Retire un objet du stockage
- SplObjectStorage::removeAll — Retire les objets d'un stockage qui appartiennent à un autre stockage
- SplObjectStorage::removeAllExcept — Supprime tous les objets du stockage courant sauf ceux contenus dans d'autres stockages
- SplObjectStorage::rewind — Remet l'itérateur au début
- SplObjectStorage::seek — Cherche un itérateur à une position
- SplObjectStorage::serialize — Sérialise un stockage
- SplObjectStorage::setInfo — Modifie les données associées à l'élément courant
- SplObjectStorage::unserialize — Désérialise un stockage à partir de sa forme en chaîne
- SplObjectStorage::valid — Vérifie si l'élément courant est valide

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