Karar Yapıları


    × Bunları biliyor muydunuz?
"Başlangıç kontrolcüsü tanımlayarak bu kontrolcüde yer alan kodların diğer tüm kontrolcüler için geçerli olmasını sağlayabilirsiniz."

 


Bir programlama dilinin en önemli konusu karar yapılarıdır. Karar yapıları bir programın kod akışına yön vermek için kullanılır. Bir nevi programa zeka katmak için kullanılan unsurlardır. Bir kodun hangi durumda nasıl davranması gerektiğini belirtir. Özellikle karşılaştırma operatörleri ile birlikte kullanılır. Bir koşulun durumuna  bağlı olarak kod akışına yön verir. Bir programı program yapan da zaten bu karar verme mekanizmalarıdır. Bir çok farklı programlama dilinde olduğu gibi PHP programlama dilinde de karar verme mekanizmaları olarak if-elseif-else ve switch-case yapıları kullanılmaktadır.

 

 

# Bölüm Başlıkları


# If - Elseif - Else

 Kısa If - Else Kullanımı

# Switch - Case

 

 

# If - Elseif - Else


Aşağıda bu yapının kullanımının söz dizimi gösterilmiştir.

if( $kosul )
{
    # Koşulun true dönmesi durumunda bu bölümdeki kodlar çalışır.
}
elseif( $kosul2 )
{
    # 1. koşul false ise bu koşula bakılır. Bu koşulun true dönmesi durumunda
    # bu bölümdeki kodlar çalışır.
    # Bu bloğun kullanımı zorunlu değildir.
}
else
{
    # Yukarıda belirtilen koşuların hiç birinin true dönmemesi durumunda
    # bu bölümdeki kodlar çalışır.
    # Bu bloğun kullanımı zorunlu değildir.
}

Konunun daha iyi anlaşılması için çeşitli örnekler verelim.

$kullanici = 'ZN';
$sifre     = '1234';

if( $kullanici === 'ZN' &&  $sifre === '1234' )
{
    echo 'Kullanıcı adı ve şifre doğru.';
}
else
{
    echo 'Kullanıcı adı veya şifre yanlış!';
}
Kullanıcı adı ve şifre doğru.

Yukarıdaki kod incelendiğinde belirtilen koşulun durumuna göre programın nasıl davranması gerektiği belirtilmiştir. Artık yavaş yavaş programlamaya giriş yapıyoruz diyebiliriz.

Kısa If - Else Kullanımı

3'lü karşılaştırma operatörü ile daha kısa bir şekilde karar verme mekanizması oluşturabilirsiniz.

$kullanici = 'ZN';
$sifre     = '1234';

echo ( $kullanici === 'ZN' &&  $sifre === '1234' )
     ? 'Kullanıcı adı ve şifre doğru.'
     : 'Kullanıcı adı veya şifre yanlış!';
Kullanıcı adı ve şifre doğru.

 

 

# Switch - Case


Bu karar yapısı if-else'den farklı olarak bir karşılaştırmadan ziyade bir değer ile eşleşen anahtara göre karar verilmesini sağlar. Bir if-else mekanizması switch-case'nin yapabildiği her işi yapabilirken tam tersi için aynı durum söz konusu değildir. Söz dizimi aşağıdaki gibidir.

switch( $anahtar )
{
    case 'değer1': 
        # Anahtar ile değerin eşleşmesi durumunda bu bölüm çalışır.
    break;

    case 'deger2':
        # Anahtar ile değerin eşleşmesi durumunda bu bölüm çalışır.
    break;

    default:
        # Hiç bir eşleşme sağlanamazsa bu bölüm çalışır. 
        # Bu bloğun kullanımı zorunlu değildir.
}

Konunun daha iyi anlaşılması için çeşitli örnekler verelim.

$sehir = 'istanbul';

switch( $sehir )
{
    case 'istanbul': echo 'Burası istanbul.'; break;
    case 'izmir'   : echo 'Burası izmir.';    break;

    default: echo 'Burası ankara.';
}
Burası istanbul.

Birden fazla duruma göre aynı bloğu çalıştırmak için aşağıdaki gibi de kullanılabilir.

$sehir = 'çorum';

switch( $sehir )
{
    case 'istanbul':
    case 'ankara'  :
    case 'çorum'   :
    case 'izmir'   : echo 'Burası Türkiye.'; break;

    default: echo 'Burası Türkiye değil!';
}
Burası Türkiye.

Hatalardan kaçınmak için switch deyiminin nasıl çalıştığını anlamak önemlidir. switch deyimi satır satır ele alınır (aslında deyim deyim). Başlangıçta, hiçbir kod çalıştırılmaz. Yalnızca switch ifadesiyle birlikte verilen değer ile uyuşan case deyimi bulunduğunda PHP ilgili deyimleri çalıştırmaya başlar. PHP switch bloğu sonlanana kadar ya da ilk break deyimi ile karşılaşıncaya kadar çalışmasına devam eder. Bir case bloğunun sonuna break koymazsanız, PHP sonraki case deyiminden kodları çalıştırmaya devam eder.  

$sehir = 'istanbul';

switch( $sehir )
{
    case 'istanbul': echo 'Burası istanbul.';
    case 'izmir'   : echo 'Burası izmir.';  

    default: echo 'Burası ankara.';
}
Burası istanbul.
Burası izmir.
Burası ankara.

Bir switch deyiminde, koşul yalnızca bir defa sorgulanır ve sonuç her bir case deyimi ile karşılaştırılır. Bir elseif deyiminde ise, koşul tekrar sorgulanır. Kullanmak istediğiniz koşul basit bir karşılaştırma işleminden daha karmaşıksa ve/veya bir döngü içerisindeyse, switch kullanmak daha hızlı olabilir.