İlan
04 Haz 2026 19 çevrimiçi üye Duyurular
Ana Sayfa Web Geliştirme
Ana Sayfa Forum Web Geliştirme PHP 8'de Nesne Yönetimi Sanatı: Weak Map&apos...
İlan Yan banner placeholder

PHP 8'de Nesne Yönetimi Sanatı: Weak Map'ler

Sahinsah55 28.03.2026 06:41 699 görüntüleme 2 cevap
Son Mesaj
Sahinsah55
Üye
Üye
Katılım27 Oca 2026
Konular10
Mesajlar42
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
28.03.2026 06:41 #1

PHP 8'de Nesne Yönetimi Sanatı: Weak Map'ler

​PHP 8, nesne yönelimli programlama dünyasına oldukça değerli bir yenilik getirdi: Weak Map'ler. Peki, bu yapı nedir ve neden bu kadar önemli? Weak Map'ler, bir nesneye veri bağlamanıza olanak tanır, ancak bunu yaparken o nesnenin bellekten silinmesini (garbage collection) engellemez. Gelin, bu güçlü aracın ne olduğuna ve PHP kodlarımızı nasıl daha verimli hale getirebileceğine yakından bakalım.

Weak Map'leri Anlamak: Bellek Sızıntılarına Son

Geleneksel ilişkisel dizilerde (array), bir nesneyi anahtar (key) olarak kullandığımızda, o nesneye "güçlü bir referans" oluşturmuş oluruz. Bu durum, kodun başka hiçbir yerinde kullanılmasa bile o nesnenin bellekte yer kaplamaya devam etmesine neden olur ve bu da istenmeyen bellek sızıntılarına yol açabilir.

İşte Weak Map'ler tam da bu sorunu çözmek için devreye giriyor. Bir nesneye veri bağlarken güçlü bir referans oluşturmazlar. Bu sayede, eğer bir nesneye olan tek referans Weak Map içerisindeyse, çöp toplayıcı (garbage collector) o nesneyi gönül rahatlığıyla bellekten temizleyebilir.

Weak Map Oluşturma

PHP 8'de bir Weak Map oluşturmak için WeakMap sınıfını kullanırız. Boş bir Weak Map şu şekilde oluşturulur:

php:
$weakMap = new WeakMap();

Nesnelere Veri Ekleme ve Okuma

Bir nesneye veri bağlamak için set metodunu kullanırız. İlk parametre nesnenin kendisi, ikincisi ise bağlamak istediğimiz veridir.

php:
$nesne = new stdClass();
$weakMap->set($nesne, "Bu nesneyle ilişkili veri");

Bu nesneye bağlı veriyi geri almak için ise get metodunu kullanırız:

php:
$veri = $weakMap->get($nesne);
// $veri değişkeninin değeri şimdi "Bu nesneyle ilişkili veri" oldu.

Kontrol ve Silme İşlemleri

Bir nesnenin Weak Map içinde var olup olmadığını kontrol etmek için has metodunu kullanabilirsiniz:

php:
if ($weakMap->has($nesne)) {
    echo "Nesne, Weak Map içinde bulundu.";
} else {
    echo "Nesne, Weak Map içinde bulunamadı.";
}

Eğer bir nesneyi ve ona bağlı veriyi Weak Map'ten kaldırmak isterseniz, unset fonksiyonunu kullanmanız yeterlidir:

Kod:
unset($weakMap[$nesne]);
// Bu işlemden sonra nesne, artık Weak Map ile ilişkili değildir.

Weak Map'lerin Kullanım Alanları

Weak Map'ler, özellikle geçici veya nesnenin yaşam döngüsünü etkilememesi gereken veri ilişkilendirmelerinde parlar. İşte bazı yaygın kullanım senaryoları:
  • Önbellekleme (Caching): Nesnelere ait hesaplanmış verileri önbelleğe alırken, nesne bellekten silindiğinde önbellekteki verinin de otomatik olarak temizlenmesini sağlar.
  • Olay Dinleyicileri (Event Listeners): Olay tabanlı sistemlerde, bir nesneye olay dinleyicileri bağlayabilirsiniz. Nesne yok olduğunda, ona bağlı dinleyiciler de otomatik olarak kaybolur.
  • Nesneye Özel Meta Veriler: Nesnelerin kendisini değiştirmeden onlara ek bilgiler veya meta veriler eklemek için mükemmel bir yoldur.
  • Kaynak Yönetimi: Bir nesneye bağlı veritabanı bağlantısı gibi kaynakların, nesne artık kullanılmadığında serbest bırakılmasını garantilemeye yardımcı olur.
Sonuç olarak, PHP 8 ile gelen Weak Map'ler, nesnelerle veri ilişkilendirirken bellek yönetimini çok daha verimli hale getiren güçlü bir araçtır. Özellikle büyük ve karmaşık uygulamalarda, bellek sızıntılarını önleyerek daha temiz ve performanslı kod yazmamıza olanak tanır.
lalala
Üye
Üye
Katılım20 Nis 2026
Konular6
Mesajlar43
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
06.05.2026 21:21 #2
Eline sağlık
Krok
Üye
Üye
Katılım01 Mar 2026
Konular7
Mesajlar51
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.05.2026 14:50 #3
Paylaşım için teşekkürler
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
İlan Yan banner placeholder