WeakMap sınıfı

(PHP 8)

Giriş

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, Traversable (IteratorAggregate üzerinden) ve Countable arayüzlerini gerçekler, bu yüzden çoğu durumda ilişkili bir dizi gibi kullanılabilir.

Sınıf Sözdizimi

final class WeakMap implements ArrayAccess, Countable, IteratorAggregate {
/* Yöntemler */
public count(): int
public offsetExists(object $nesne): bool
public offsetGet(object $nesne): mixed
public offsetSet(object $nesne, mixed $değer): void
public offsetUnset(object $girdi): void
}

Örnekler

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

İçindekiler