A classe WeakMap
(PHP 8)
Introdução
Um WeakMap é um mapa (ou dicionário) que aceita objetos como chaves. Entretanto, diferentemente do objeto similar SplObjectStorage, um objeto em uma chave de um WeakMap não contribui com a contagem de referência do objeto. Isto é, se em algum ponto a única referência restante a um objeto é a chave de um WeakMap, o objeto sofrerá uma coleta de lixo e será removido do WeakMap. Seu caso de uso primário é construir caches de dados derivados de um objeto que não precisam durar mais que o objeto.
WeakMap implementa ArrayAccess, Traversable (via IteratorAggregate) e Countable, por isso na maioria dos casos pode ser usada da mesma forma que um array associativo.
Resumo da classe
Exemplos
Example #1 Exemplo de uso de 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));
O exemplo acima produzirá:
int(1) Unsetting... Dead! Done int(0)
Table of Contents
- WeakMap::count — Conta o número de entradas ativas no mapa
- WeakMap::getIterator — Obtém um iderador externo
- WeakMap::offsetExists — Verifica se um certo objeto está no mapa
- WeakMap::offsetGet — Retorna o valor apontado por um certo objeto
- WeakMap::offsetSet — Atualiza o mapa com um novo par chave-valor
- WeakMap::offsetUnset — Remove uma entrada do mapa