# La clase WeakMap

(PHP 8)

## Introducción

Un WeakMap es un array asociativo (o diccionario) que acepta objetos como claves. Sin embargo, a diferencia del similar SplObjectStorage, un objeto en una clave de WeakMap no contribuye al número de referencias del objeto. En otras palabras, si, en un momento dado, la única referencia restante a un objeto es la clave de un WeakMap, el objeto será recolectado y eliminado del WeakMap. Su principal caso de uso es la construcción de cachés de datos derivados de un objeto que no necesitan ser conservados más tiempo que el objeto.

WeakMap implementa ArrayAccess, Traversable (vía IteratorAggregate), y Countable, de modo que, en la mayoría de los casos, puede ser utilizado de la misma manera que un array asociativo.

## Sinopsis de la Clase

final class WeakMap implements ArrayAccess, Countable, IteratorAggregate {
/* Métodos */
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
}

## Ejemplos

Ejemplo #1 Ejemplo de uso de 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));

El ejemplo anterior mostrará:

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

## Tabla de contenidos

- WeakMap::count — Cuenta el número de entradas activas en el diccionario
- WeakMap::getIterator — Recupera un iterador externo
- WeakMap::offsetExists — Verifica si un cierto objeto se encuentra en el diccionario
- WeakMap::offsetGet — Devuelve el valor indicado por un cierto objeto
- WeakMap::offsetSet — Actualiza el diccionario con una nueva pareja clave-valor
- WeakMap::offsetUnset — Elimina una entrada del diccionario

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