# La classe WeakMap

(PHP 8)

## Introduction

Un WeakMap est un tableau associatif (ou dictionnaire) qui accepte des objets comme clés. Cependant, contrairement au autrement 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 implemente 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 count(): int
public getIterator(): Iterator
public offsetExists(object `$object`): bool
public offsetGet(object `$object`): mixed
public offsetSet(object `$object`, mixed `$value`): void
public 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