Skip to main content

Command Palette

Search for a command to run...

PHP 8.5 Geldi! Kod Yazmak Artık Daha Akıcı

Updated
3 min read
PHP 8.5 Geldi! Kod Yazmak Artık Daha Akıcı

Beklenen gün geldi! PHP 8.5, 20 Kasım itibarıyla resmen hayatımıza girdi. "Yine mi güncelleme?" demeyin; çünkü bu sürüm, sadece performans iyileştirmeleriyle değil, kod yazarken "Keşke şöyle bir şey olsa" dediğimiz pek çok özelliği (syntax sugar) getirmesiyle öne çıkıyor.

Teknik terimlere boğulmadan, en havalı 5 yeni özelliği senin için inceledim. Kahveni al, başlıyoruz! ☕️


1. Boru Operatörü (Pipe Operator) |> 🚀

Nedir? Kod yazarken iç içe geçmiş fonksiyonlardan (nesting hell) kurtulmanın yolu.

Eskiden (PHP 8.4 ve öncesi): Bir veriyi alıp sırasıyla filtrelemek, map'lemek ve birleştirmek istediğimizde kodumuz "Rus Matruşkası" gibi iç içe geçerdi. Okuması zordur, çünkü mantık içten dışa doğru işler.

// Okumak için en içten (array_filter) başlamanız lazım 🤯
$sonuc = implode(', ', 
    array_map(
        fn($u) => $u->name, 
        array_filter($users, fn($u) => $u->isActive)
    )
);

Şimdi (PHP 8.5): Artık veriyi bir boru hattına (pipeline) sokuyoruz. Veri soldan giriyor, işlemlerden geçip sağdan çıkıyor. Okuması soldan sağa ve yukarıdan aşağıya çok daha doğal!

// Veri akışını şelale gibi izleyin 🌊
$sonuc = $users
    |> array_filter(..., fn($u) => $u->isActive)
    |> array_map(..., fn($u) => $u->name)
    |> implode(', ', ...);

Mantık: |> işareti, solundaki sonucu, sağındaki fonksiyonun içine (genellikle ... ile belirtilen yere) argüman olarak fırlatır.


2. clone with (Değiştirerek Kopyalama) ✨

Nedir? Bir nesnenin kopyasını alırken, "sadece şu özelliğini değiştir" demenin en kısa yolu. Özellikle Immutable (değişmez) nesnelerle çalışırken hayat kurtarır.

Eskiden: Önce klonla, sonra değiştir. İki iş.

$eskiProfil = new UserProfile('Harun', 'Dark Mode');

// Önce kopyala
$yeniProfil = clone $eskiProfil;
// Sonra değiştir (Eğer özellik readonly ise bu bile zordu!)
$yeniProfil->theme = 'Light Mode';

Şimdi (PHP 8.5): Kopyalama anında değişikliği yapıyoruz. Sanki bir belge fotokopisi çekerken, tek bir satırı daktiloyla düzeltip öyle çıktı almak gibi.

// Tek satırda iş bitti! ✅
$yeniProfil = clone $eskiProfil with {
    theme: 'Light Mode'
};

3. Yeni Dizi Kahramanları: array_find 🕵️‍♂️

Nedir? Bir dizinin içinde belirli bir şartı sağlayan ilk elemanı bulmak için artık döngü yazmaya veya takla atmaya gerek yok.

Eskiden: Ya foreach ile dönüp break yapardık ya da array_filter ile tüm diziyi süzüp ilk elemanı alırdık (ki bu performans kaybı demekti).

$bulunanKullanici = null;
foreach ($users as $user) {
    if ($user->id === 42) {
        $bulunanKullanici = $user;
        break;
    }
}

Şimdi (PHP 8.5): PHP'ye "Bana ID'si 42 olanı bul getir" diyoruz, o kadar.

// Çok daha temiz, değil mi?
$bulunanKullanici = array_find($users, fn($u) => $u->id === 42);

Not: Ayrıca array_find_key, array_any ve array_all gibi yardımcılar da geldi!


4. #[NoDiscard] Özelliği ⚠️

Nedir? "Bu fonksiyonun sonucunu görmezden gelemezsin, mutlaka kullan!" uyarısı.

Örnek: Diyelim ki bir güvenlik fonksiyonunuz var ve size "işlem başarılı mı?" diye bir true/false dönüyor. Eğer siz bu fonksiyonu çağırıp sonucunu kontrol etmezseniz, güvenlik açığı oluşabilir.

#[NoDiscard]
function kritikIslem(): bool {
    // ... işlem ...
    return false; // Başarısız!
}

// PHP 8.5'te bu satır UYARI verir! 🚨
// Çünkü sonucu bir değişkene atamadın veya if içinde kullanmadın.
kritikIslem(); 

// Doğrusu:
$sonuc = kritikIslem();

Benzetme: Markette para üstünü almadan çıkmaya çalışırsanız kasiyerin arkadan bağırması gibidir. 🗣️


5. URL Analizi Artık Çok Daha Güçlü 🌍

Nedir? PHP'nin emektar parse_url fonksiyonu bazen modern URL'lerde hatalı çalışabiliyordu. PHP 8.5 ile gelen yeni URL Parser API, modern web standartlarına (RFC 3986 ve WHATWG) tam uyumlu.

// Artık URL parçalamak daha güvenilir ve nesne tabanlı
$uri = new Uri\Rfc3986\Uri('https://kullanici:sifre@site.com:8080/yol?q=php#hash');

echo $uri->getHost(); // site.com
echo $uri->getPort(); // 8080

Özet: Güncellemeli mi?

Kesinlikle! Özellikle Pipe Operatörü ve Clone With, Laravel veya Symfony projelerindeki kod kalabalığını ciddi oranda azaltacak gibi duruyor.

PHP 8.5, dilin sadece "iş gören" değil, aynı zamanda "yazarken keyif veren" bir dil olma yolundaki en büyük adımlarından biri.

Görsel ve içerik Gemini tarafından yorumlanmıştır.