Switch ve Match İfadeleri
Çok dallı mantık için switch ve PHP 8 match kullanın.
Switch ve Match İfadeleri, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
switch ve if Zincirleri Karşılaştırması
Tek bir değişkenin değerine göre çok sayıda dalınız olduğunda, switch uzun bir if/elseif zincirinden daha temizdir.
PHP 8, modern ve katı bir alternatif olarak match yapısını tanıttı.
switch Deyiminin Temelleri
switch, ifadesini bir kez değerlendirir ve eşleşen durum bloğunu çalıştırır:
<?php
$day = 'Monday';
switch ($day) {
case 'Monday':
echo 'Start of work week';
break;
case 'Friday':
echo 'Almost weekend';
break;
default:
echo 'Midweek';
}Bir Sonraki Duruma Geçiş Davranışı
break olmadan yürütme bir sonraki duruma geçer; bu, durumları bilinçli olarak gruplamak için kullanılan bir tekniktir:
<?php
$status = 2;
switch ($status) {
case 1:
case 2:
case 3:
echo 'In progress'; // runs for 1, 2, or 3
break;
case 4:
echo 'Done';
break;
}switch Esnek Karşılaştırma Kullanır
switch, dahili olarak == (esnek karşılaştırma) kullanır; bu da şaşırtıcı eşleşmelere yol açabilir:
<?php
$val = 0;
switch ($val) {
case 'foo': // 0 == 'foo' in PHP 7!
echo 'match foo';
break;
case 0:
echo 'match zero'; // PHP 8 fixes this
break;
}
// PHP 8: match zero (fixed)
// PHP 7: match foo (bug!)PHP 8 match İfadesi
match, switch yapısına benzer; ancak katı karşılaştırma kullanır, bir değer döndürür ve break gerektirmez:
<?php
$status = 'active';
$label = match($status) {
'active' => 'Currently active',
'inactive' => 'Not active',
'pending' => 'Awaiting activation',
default => 'Unknown status',
};
echo $label; // Currently activeEşleşme Olmadığında match İstisnası
match içinde hiçbir dal eşleşmezse ve default yoksa UnhandledMatchError fırlatılır:
<?php
$code = 99;
try {
$result = match($code) {
200 => 'OK',
404 => 'Not Found',
500 => 'Server Error',
// no default!
};
} catch (\UnhandledMatchError $e) {
echo 'Unhandled match value: ' . $code;
}Birden Çok Koşulla match
Tek bir match dalında virgülle ayrılmış birden çok değer listelenebilir:
<?php
$lang = 'tr';
$region = match($lang) {
'en', 'en-US', 'en-GB' => 'English',
'tr', 'az' => 'Turkic',
'fr', 'be', 'ca' => 'French-speaking',
default => 'Other',
};
echo $region; // TurkicKarmaşık İfadelerle match
match dallarının sağ tarafında rastgele ifadeler kullanılabilir:
<?php
$score = 85;
$grade = match(true) {
$score >= 90 => 'A',
$score >= 80 => 'B', // matches
$score >= 70 => 'C',
default => 'F',
};
echo $grade; // Bmatch İçinden Değer Döndürme
match bir ifade olduğundan, bir değer beklenen her yerde kullanılabilir:
<?php
function getHttpMessage(int $code): string {
return match($code) {
200 => 'OK',
201 => 'Created',
400 => 'Bad Request',
401 => 'Unauthorized',
404 => 'Not Found',
default => 'Unknown',
};
}
echo getHttpMessage(404); // Not FoundDeğer Döndürme Bağlamında switch
switch, farklı değerler döndürmek için bir işlevin içinde kullanılabilir; ancak match daha temizdir:
<?php
function describe(int $n): string {
switch (true) {
case $n < 0: return 'negative';
case $n === 0: return 'zero';
default: return 'positive';
}
}
echo describe(-5); // negative
echo describe(0); // zero
echo describe(7); // positiveswitch ve match Ne Zaman Kullanılmalı
Seçim yaparken şu yönergeleri izleyin:
- Katı karşılaştırmaya ve döndürülen bir değere ihtiyacınız olduğunda
matchkullanın (PHP 8+) - Durumlar arasında geçiş yaparak gruplama gerektiğinde veya PHP 7 desteği sunarken
switchkullanın - Birden çok değere göre dallanma için her ikisi de uzun if/elseif zincirlerinden daha temizdir
Hızlı Kontrol
Bir match ifadesinde hiçbir dal eşleşmez ve default bulunmazsa ne olur?
Özet: switch ve match
Temel farklar:
switch— esnek karşılaştırma, bir sonraki duruma geçiş, PHP 4+match— katı karşılaştırma, bir sonraki duruma geçiş yok, değer döndürür, PHP 8+- Varsayılan durum olmadığında match,
UnhandledMatchErrorfırlatır - match dalları, virgülle ayrılmış birden çok değeri kabul eder
Sonraki konu: for ve while döngüleri.
Sıkça Sorulan Sorular
“Switch ve Match İfadeleri” dersi ücretsiz mi?
Evet — “Switch ve Match İfadeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Switch ve Match İfadeleri” dersinde ne öğreneceğim?
Çok dallı mantık için switch ve PHP 8 match kullanın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Switch ve Match İfadeleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- if, elseif ve else
- Switch ve Match İfadeleri
- for ve while Döngüleri
- foreach ve Döngü Denetimi