PHP 8 match ifadesini ilk defa kullanıyorum
Özgün – Dev –
PHP 8.0 ile birlikte eklenen switch yerine kullanılabilecek match ifadesini ilk defa bu yazıyla birlikte inceleyeceğim. Aslında heyecan ile beklediğim bu ifadeyi 8.1'de çıkacağını zannettiğim için (😅) henüz kullanmamıştım. Lets dive in ⚡
(yani haydi dalalım aman allahım neden duruyoruz ki)
Bu yazının bilgi içeriği büyük oranda Brendt'in PHP 8: match or switch? yazısından çevrilmiştir.
TL;DR veya NTL;SIDR
Match, genellikle switch
'ten daha iyi bir tercih olacak, break
deyimi gerektirmeyen, bir satırda birden fazla case
belirtilebilen ve direkt atanan değer döndüğü için yalnızca bir kere değer tanımlamanın yeterli olduğu, switch
'e göre çok daha kısa bir ifade.
PHP dokümantasyonundan alınmış bir yapı örneği:
$return_value = match ($food) {
'apple' => 'This food is an apple',
'bar' => 'This food is a bar',
'cake' => 'This food is a cake',
};
Switch ile karşılaştıralım
Büyülü bir switch
örneği:
Daha da büyülü match
karşılığı:
No type coercion
Match
kontrolleri strict
olarak yapıyor, bu da aynı ==
yerine ===
kullanmak gibi. Case
'lerde verilen type
'lar birebir eşleşmeli.
Unknown values cause errors
Şartlarda tanımlanmayan bir değer sorulduğunda, default case
de tanımlanmadıysa Match
üzerimize bir UnhandledMatchError Exception
fırlatıyor.
Güzel ama ingiliççe köşesi
$translations = [
'translation' => 'çeviri',
'match' => 'eşleştirmek',
'switch' => 'dedişme, anahtar, şalter: burdan verdiğim değer şartlardan birinden çıksın',
'break' => 'kır, boz, dur',
'strict' => 'sıkı, harfi harfine',
'case' => 'durum, vaka: ihtimal',
'magic' => 'büyü',
'description' => 'açıklama',
'count' => 'sayı',
'answer' => 'cevap',
'default' => 'varsayılan',
'lordsoftherings' => 'yüzüklerin efendileri',
'exception' => 'istisna, sıradışı durum',
'tl;dr' => 'too long did not read: çok uzun okumayayım şimdi tadım kaçmasın',
'ntl;sidr' => 'not too long still i did not read: çok da uzun değil ama yine de okumadım',
'no type coercion' => 'otomatik type dönüşümü yok: yani mahalle kavgası yok',
'unknown values cause errors' => 'bilinmeyen değerler hataya yol açar: gönlümde'
];