WeakMap — это карта (или словарь), которая принимает объекты в качестве ключей. Однако, в отличие от аналогичного SplObjectStorage , объект в ключе WeakMap не влияет на счетчик ссылок объекта. То есть, если в какой-то момент единственной оставшейся ссылкой на объект является ключ WeakMap , объект будет удален сборщиком мусора и удален из WeakMap . Его основной вариант использования — создание кешей данных, полученных из объекта, которым не нужно жить дольше, чем сам объект.
WeakMap реализует ArrayAccess , Iterator и Countable , поэтому в большинстве случаев его можно использовать так же, как ассоциативный массив.
final class WeakMap implements ArrayAccess, Countable, IteratorAggregate {
/* Methods */
public __construct()
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
}
Пример #1 Пример использования 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));
Методы:
- WeakMap::__construct — Создает новую карту
- WeakMap::count — Подсчитывает количество активных записей на карте
- WeakMap::getIterator — Получить внешний итератор
- WeakMap::offsetExists — Проверяет, есть ли определенный объект на карте
- WeakMap::offsetGet — Возвращает значение, на которое указывает определенный объект
- WeakMap::offsetSet — Обновляет карту новой парой ключ-значение
- WeakMap::offsetUnset — Удаляет запись с карты
0 комментариев