(PHP 8)
WeakMap nesneleri anahtar olarak kabul eden bir haritadır (veya sözlüktür). Ancak, SplObjectStorage'dan farklı olarak, WeakMap anahtarındaki nesne, nesnenin gönderim sayısına katkıda bulunmaz. Yani, herhangi bir noktada bir nesneye kalan tek gönderim bir WeakMap anahtarı ise, nesne çöp olarak toplanacak ve WeakMap'ten kaldırılacaktır. Birincil kullanım durumu, nesneden daha uzun yaşaması gerekmeyen bir nesneden türetilen verilerin arabelleklerini oluşturmak içindir.
WeakMap sınıfı ArrayAccess, Iterator ve Countable arayüzlerini gerçekler, bu yüzden çoğu durumda ilişkili bir dizi gibi kullanılabilir.
Örnek 1 - Weakmap kullanım örneği
<?php
$wm = new WeakMap();
$o = new StdClass;
class A {
public function __destruct() {
echo "Öldü!\n";
}
}
$wm[$o] = new A;
var_dump(count($wm));
echo "Yok ediliyor...\n";
unset($o);
echo "İşi bitti\n";
var_dump(count($wm));
Yukarıdaki örneğin çıktısı:
int(1) Yok ediliyor... Öldü! İşi bitti int(0)