PHP 8.x Yenilikleri: Match İfadesi, Named Arguments ve fazlası

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
PHP 8 serisi, yazılımcıların yıllardır beklediği birçok özelliği beraberinde getirdi. Artık daha az satırla daha güvenli ve hızlı uygulamalar geliştirmek mümkün. İşte en önemli yenilikler:

1. Match İfadesi (Switch'in Modern Hali)​


match, klasik switch ifadesinin daha güçlü ve kısa yazılan halidir. Değerleri doğrudan bir değişkene atayabilir, katı tip kontrolü (strict comparison) yapar ve break yazma zorunluluğunu ortadan kaldırır.

PHP:
<?php
$durum_kodu = 200;

$mesaj = match ($durum_kodu) {
200, 201 => 'İşlem Başarılı',
404 => 'Sayfa Bulunamadı',
500 => 'Sunucu Hatası',
default => 'Bilinmeyen Hata',
};

echo $mesaj; // Çıktı: İşlem Başarılı
?>

2. Named Arguments (İsimlendirilmiş Argümanlar)​


Bir fonksiyona parametre gönderirken sıralamaya uymak zorunda değilsiniz. Sadece parametre adını belirterek veri gönderebilirsiniz. Bu, özellikle çok fazla parametresi olan fonksiyonlarda okunabilirliği artırır.

PHP:
// Eski yöntem: Sıralama önemliydi
// setcookie("user", "admin", time() + 3600, "/", "", true, true);

// PHP 8+: Sadece ihtiyacınız olanları isimlendirerek gönderin
setcookie(
name: "user",
value: "admin",
expires: time() + 3600,
httponly: true
);
?>

3. Constructor Property Promotion​


Sınıf özelliklerini hem tanımlayıp hem de kurucu metot içinde atama yapma zahmetinden kurtulun. Tek satırda hem özelliği tanımlar hem de değerini atarsınız.

PHP:
// PHP 7.x öncesi: 3 kez yazmanız gerekiyordu
// PHP 8+: Tek satırda halledin
class Kullanici {
public function __construct(
public string $ad,
public string $eposta,
private int $yas = 18
) {}
}

$uye = new Kullanici("Can", "[email protected]");
echo $uye->ad;
?>

4. Nullsafe Operator (?->)​


İç içe geçmiş nesnelerde bir özelliğin null olup olmadığını kontrol etmek için uzun if blokları yazmaya son. Eğer zincirdeki bir halka null ise, hata vermek yerine tüm ifade null döner.

PHP:
// Eski yöntem
$ulke = null;
if ($kullanici !== null) {
$profil = $kullanici->getProfil();
if ($profil !== null) {
$ulke = $profil->ulke;
}
}

// PHP 8+ Modern Yöntem
$ulke = $kullanici?->getProfil()?->ulke;
?>

PHP 8.x Yenilikleri Özet Tablosu​


ÖzellikAçıklamaAvantaj
JIT (Just-In-Time)Kodun makine diline derlenme şekliCPU ağırlıklı işlemlerde %50+ performans artışı
Union TypesBirden fazla tip tanımlama (int|string)Daha esnek veri doğrulama
str_contains()Metin içinde arama yapan yeni fonksiyonArtık strpos() karmaşasına gerek yok
ReadOnly PropertiesSadece bir kez atanabilen özelliklerVeri tutarlılığını garanti eder

Sonuç​


PHP 8.x sürümleri, dili daha "kurumsal" ve "güvenli" bir hale getirdi. Özellikle match ifadesi ve nullsafe operator, kod yazma alışkanlıklarımızı kökten değiştirdi. Eğer hala eski sürümleri kullanıyorsanız, hem performans hem de güvenlik için projelerinizi 8.x sürümlerine yükseltmeniz hayati önem taşır.
 
Geri
Üst