Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: PHP 8.4’te Tip Güvenli Koleksiyonlar: Dizilerin Sahip Olmasını İstediğim Özellikler
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » PHP 8.4’te Tip Güvenli Koleksiyonlar: Dizilerin Sahip Olmasını İstediğim Özellikler

Yazılım

PHP 8.4’te Tip Güvenli Koleksiyonlar: Dizilerin Sahip Olmasını İstediğim Özellikler

teknomers
Son güncelleme: 26 Nisan 2026 04:10
teknomers
Paylaş
Paylaş

Günlük Acı

Aşağıdaki kod dizisi, muhtemelen tanıdık bir manzarayı yansıtıyor:

$activeAdmins = array_values(
            array_filter(
                array_map(fn($u) => $u->refresh(), $users),
                fn($u) => $u->isActive() && $u->isAdmin()
            )
        );

Bu kod dizesinde üç temel sorun var:

1. Okuma sırası, yürütme sırasıyla çatışıyor. Kodda array_values ifadesine göz atıyorsunuz ama bu, en son çalışıyor. Bu durum, kodu her zaman ters yönde çözmenize neden oluyor.

2. Türler çöküyor. array_filter, array gibi bir tür dönerken, array_values da benzer bir tür döner. Bir User|Customer birleşimiyle zor bir senaryoya girdiğinizde PHPStan sorun yaşamaya başlıyor.

3. Anahtarlar, PHP dizilerinde tam anlamıyla işlenmez. PHP dizileri, anahtarların üzgün bir taklidi ile çalışır:

$a = ['1' => 'a'];
        var_dump(array_keys($a)); // [0 => int(1)], "1" artık bir int
        $b = [true => 'x', 1 => 'y'];
        count($b); // 1 - true ve 1 çakışıyor
        $c = [];
        $c[$someUser] = 'admin'; // Fatal error: Illegal offset type
        

Bu sorunların üzerinden geçerek PHP ile nasıl daha verimli çalışabileceğimize bakalım.

Ne Yaptım

Geliştirdiğim çözüm, üç gerçek tür: List, Set ve Map. Her birinin değiştirilebilir, değiştirilemez ve tembel (lazy) sürümleri mevcut. Bütün yöntemlere akan tam generikler ile yapılan bir yapıdır. Uygulamalar, arayüzlerin arkasında gizlenmiştir, bu nedenle dahili yapıları değiştirmek son derece kolaydır.

Aynı kodu aşağıdaki şekilde yeniden yazabiliriz:

$activeAdmins = listOf($users)
            ->map(fn(User $u) => $u->refresh())
            ->filter(fn(User $u) => $u->isActive() && $u->isAdmin());

Bu çözüm, kodun okunabilirliğini artırır. Kod, yukarıdan aşağıya doğru okunabilir ve PHPStan, ImmutableList türünü araya sokar. Eğer map() eleman türünü daraltmış olsaydı, bu daralma da propogasyona tabi olacaktı.

Diğer Kütüphanelerden Beklemediğiniz Şeyler

Değiştirilebilir ve değiştirilemez tür ayrımı, bayrak değil, ayrı türlerdir.

MutableList::add() metodu $this dönerken, ImmutableList::add()yeni bir örnek döner ve #[NoDiscard] ile işaretlenir; bu da PHP 8.5’te gerçek bir uyarı haline gelir. “Eklendi” elemanınızın boşluğa atılmasını artık engellemiş olursunuz.

Map görünüm (views) canlı koleksiyonlardır.

$map->keys, $map->values, ve $map->entries gerçek Set ve List örnekleri olarak işleyen, aynı alt yapıyı paylaşan yapılardır. Belleği paylaşır ve tam koleksiyon API’sine sahiptirler. Böylece $map->values->sum() ve $map->keys->sorted() direkt çalışır.

Deneme

composer require noctud/collection
        

Varsayılan pin (^0.1.1), sizi yalnızca 0.1.x yamanlarına yönlendirir. BC kırılmaları 0.2 sürümü ile gelir ve composer otomatik olarak bunları yüklemez, bu yüzden bu şekilde kilitlemek 0.x döngüsü boyunca güvenceli olacaktır.

Belgeler ve örnekler: https://noctud.dev
GitHub: https://github.com/noctud/collection

This version maintains the structure and important technical components of the original article while translating it for Turkish developers with respect for the important rules provided.

Contents
  • Günlük Acı
  • Ne Yaptım
  • Diğer Kütüphanelerden Beklemediğiniz Şeyler
  • Deneme

Kaynak: Orijinal Makale

Laravel ve yt-dlp Kullanarak TikTok Video İndirici Nasıl Oluşturulur
Algolia’ya Para Ödemeyi Bırakın: PostgreSQL Tam Metin Aramasını Ustalıkla Kullanma 🐘
Laravel Kuyruk Testi: Çoğu Geliştiricinin Hata Yaptığı Noktalar
Artisan Kaydırmaktan Bıktınız mı? php artisan list –mine ile Tanışın
Ham SQL Tarih Fonksiyonlarını Kullanmayı Neden Bıraktım ve Laravel’de Carbon’a Geçtim
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Kamerayı Değiştirerek Crimson Desert Deneyimini Yenileyin
Sonraki Makale QuotigyDash: Laravel 11 ile Geliştirilmiş Kendinize Ait Faturalama Çözümü

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Prime Day’de %20 İndirimli Eldiven Fan Fırsatları Kaçmadan Yakala!
Genel
Kritik: GitHub Repo Tüyolarıyla AI Kodlayıcıları Malware Çalıştırıyor
Siber Güvenlik
Odadaki en fit kurucu kanserle savaştı: Yapay zekadan nasıl yararlandı?
Yapay Zeka
Yeni 52 çekirdekli Intel Nova Lake CPU 474W çekebilir, LGA1954 anakartlar üç 8-pin güç hattı isteyebilir
Donanım
Bağımsız Geliştiriciler Yeni Star Fox’u Kendileri Yapıyor
Liste
Akıllı Ev Endüstrisi Matter İçin Neden Hala Bahis Oynuyor?
Liste
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?