1. Giriş
PHP 8, geleneksel switch yapısına modern bir alternatif olan match ifadesini tanıttı.Bu yeni yapı, daha kısa, daha güvenli ve daha tahmin edilebilir bir kontrol akışı sağlar.
2. switch ile Karşılaştırma
Önce klasik switch yapısına bakalım:Kod:
$status = 404;
switch ($status) {
case 200:
$message = 'Başarılı';
break;
case 404:
$message = 'Bulunamadı';
break;
case 500:
$message = 'Sunucu Hatası';
break;
default:
$message = 'Bilinmeyen durum';
}
echo $message;
Bu yapı çalışır, ancak bazı dezavantajları vardır:
break yazmayı unutmak hataya neden olabilir.
Gevşek (loose) karşılaştırma yapar (== kullanır, === değil).
switch bir değer döndürmez; yalnızca kod blokları çalıştırır.
3. match İfadesi Nedir?
match, switch’in daha güçlü, tip güvenli ve ifadeye dayalı versiyonudur.
Yani, match bir değer döndürür ve tip karşılaştırması (strict comparison) (===) yapar.
Örnek:
Kod:
$status = 404;
$message = match ($status) {
200 => 'Başarılı',
404 => 'Bulunamadı',
500 => 'Sunucu Hatası',
default => 'Bilinmeyen durum',
};
echo $message;
Çıktı:
Bulunamadı
4. Match Sözdizimi
Genel biçim:Kod:
$result = match (ifade) {
durum1 => sonuç1,
durum2 => sonuç2,
default => varsayılanSonuç,
};
Özellikleri:
match bir değer döndürür → değişkene atanabilir.
break gerekmez.
Katı karşılaştırma (===) kullanır.
Her durum bir ifade (expression) döndürür (blok değil).
5. Birden Fazla Durum (Case) Tanımlama
Birden fazla durumu aynı sonuca bağlayabilirsiniz:Kod:
$message = match ($status) {
200, 201, 202 => 'Başarılı',
400, 401, 403 => 'İstemci Hatası',
500, 501 => 'Sunucu Hatası',
default => 'Bilinmeyen durum',
};
6. İfadelerde Değer Dönüşü
match ifadeleri, yalnızca sabit değerleri değil, herhangi bir ifade sonucunu döndürebilir:Kod:
$age = 20;
$type = match (true) {
$age >= 65 => 'Yaşlı',
$age >= 18 => 'Yetişkin',
$age >= 13 => 'Genç',
default => 'Çocuk',
};
echo $type; // "Yetişkin"
Burada $age değişkeni doğrudan değil, koşulların sonucu karşılaştırılır.


