# La classe WeakMap

(PHP 8)

## Introduction

Un WeakMap est un tableau associatif (ou dictionnaire) qui accepte des objets comme clés. Cependant, contrairement au par ailleurs similaire SplObjectStorage, un objet dans une clé de WeakMap ne contribue pas au nombre de références de l'objet. En d'autres termes, si, à un moment donné, la seule référence restante à un objet est la clé d'un WeakMap, l'objet sera ramassé et supprimé du WeakMap. Son principal cas d'utilisation est la construction de caches de données dérivées d'un objet qui n'ont pas besoin d'être conservées plus longtemps que l'objet.

WeakMap implémente ArrayAccess, Traversable (via IteratorAggregate), et Countable, de sorte que, dans la plupart des cas, il peut être utilisé de la même manière qu'un tableau associatif.

## Synopsis de la classe

final class WeakMap implements ArrayAccess, Countable, IteratorAggregate {
/* Méthodes */
public function count(): int
public function getIterator(): Iterator
public function offsetExists(object `$object`): bool
public function offsetGet(object `$object`): mixed
public function offsetSet(object `$object`, mixed `$value`): void
public function offsetUnset(object `$object`): void
}

## Exemples

Exemple #1 Exemple d'utilisation d'un Weakmap

    <?php
    $wm = new WeakMap();

    $o = new stdClass;

    class A {
        public function __destruct() {
            echo "Dead!\n";
        }
    }

    $wm[$o] = new A;

    var_dump(count($wm));
    echo "Unsetting...\n";
    unset($o);
    echo "Done\n";
    var_dump(count($wm));

L'exemple ci-dessus va afficher :

    int(1)
    Unsetting...
    Dead!
    Done
    int(0)

## Sommaire

- WeakMap::count — Compte le nombre d'entrées actives dans le dictionnaire
- WeakMap::getIterator — Récupère un itérateur externe
- WeakMap::offsetExists — Vérifie si un certain objet se trouve dans le dictionnaire
- WeakMap::offsetGet — Retourne la valeur indiquée par un certain objet
- WeakMap::offsetSet — Met à jour le dictionnaire avec une nouvelle paire clé-valeur
- WeakMap::offsetUnset — Supprime une entrée du dictionnaire

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