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 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

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top