Dünya

PHP'de Ternary Operatör Kullanımı: Kapsamlı Rehber

PHP'de ternary operatör, if-else yapılarını tek satırda yazmanızı sağlayan güçlü bir kısayoldur.

Abone Ol

Bu yazımızda, ternary operatörü detaylı bir şekilde ele alacak ve pratik örneklerle kullanımını gösterecektir.

Ternary Operatör Nedir?

Ternary operatör, adını üç parçadan oluştuğu için almıştır ve şu yapıda kullanılır:
koşul ? doğruysa_değer : yanlışsa_değer;
Bu yapı, aşağıdaki if-else yapısının kısa bir versiyonudur:

 if (koşul) {
$sonuç = doğruysa_değer;
} else {
$sonuç = yanlışsa_değer;
}

Temel Kullanım Örnekleri

Örnek 1: Basit Değer Ataması

 $yaş = 20;
$durum = ($yaş >= 18) ? 'Yetişkin' : 'Çocuk';
echo $durum; // Çıktı: Yetişkin

Örnek 2: Boş Kontrolü

 $kullanıcı_adı = '';
$gösterilecek_ad = empty($kullanıcı_adı) ? 'Misafir' : $kullanıcı_adı;
echo $gösterilecek_ad; // Çıktı: Misafir

Örnek 3: Resim Yolu Belirleme

 $profil = [
'küçük_resim' => 'küçük.jpg',
'büyük_resim' => ''
];

$resim_yolu = empty($profil['büyük_resim']) ? $profil['küçük_resim'] : $profil['büyük_resim'];
echo $resim_yolu; // Çıktı: küçük.jpg

İç İçe Ternary Operatör Kullanımı

Ternary operatörler iç içe de kullanılabilir, ancak okunabilirlik açısından dikkatli olmak gerekir.

Örnek 4: İç İçe Kullanım

 $puan = 75;
$sonuç = ($puan >= 90) ? 'A' : (($puan >= 80) ? 'B' : (($puan >= 70) ? 'C' : 'D'));
echo $sonuç; // Çıktı: C

Bu örnek aşağıdaki if-else yapısına eşdeğerdir:

 if ($puan >= 90) {
$sonuç = 'A';
} else if ($puan >= 80) {
$sonuç = 'B';
} else if ($puan >= 70) {
$sonuç = 'C';
} else {
$sonuç = 'D';
}

Kısaltılmış Ternary Operatör

PHP 5.3 sürümünden itibaren, ?: şeklinde kısaltılmış bir ternary operatör kullanılabilmektedir. Bu operatör, "Elvis operatörü" olarak da bilinir.

Örnek 5: Kısaltılmış Ternary

 $kullanıcı = $_GET['kullanıcı'] ?? 'Misafir';
// Yukarıdaki ifade PHP 7+ için null coalescing operatör

// PHP 5.3+ için kısaltılmış ternary:
$kullanıcı = isset($_GET['kullanıcı']) ? $_GET['kullanıcı'] : 'Misafir';

// Veya daha kısa olarak:
$kullanıcı = $_GET['kullanıcı'] ?: 'Misafir';

Kısaltılmış ternary operatörde (?:), koşul doğruysa koşulun kendisi döndürülür, yanlışsa alternatif değer döndürülür.

Gerçek Dünya Uygulamaları

Örnek 6: Form Değerlerini Koruma

 $ad = isset($_POST['ad']) ? htmlspecialchars($_POST['ad']) : '';
$email = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_SANITIZE_EMAIL) : '';

Örnek 7: Dil Dosyası Seçimi

 $dil = isset($_COOKIE['dil']) ? $_COOKIE['dil'] : 'tr';
$dil_dosyası = "diller/{$dil}.php";

Örnek 8: Sayfalama Kontrolü

 $sayfa = isset($_GET['sayfa']) ? (int)$_GET['sayfa'] : 1;
$limit = 10;
$başlangıç = ($sayfa - 1) * $limit;

Örnek 9: Koşullu HTML Çıktısı

 echo '<div class="' . ($hata ? 'hata' : 'başarı') . '">' . $mesaj . '</div>';

Örnek 10: Veritabanı Sonucu İşleme

 $kullanıcı = $sorgu->fetch();
$tam_ad = !empty($kullanıcı['tam_ad']) ? $kullanıcı['tam_ad'] : $kullanıcı['kullanıcı_adı'];

İyi Uygulamalar ve Dikkat Edilmesi Gerekenler

  1. Okunabilirlik: Ternary operatörler kodunuzu kısaltabilir, ancak aşırı kullanımı okunabilirliği azaltabilir.
  2. Parantez Kullanımı: Karmaşık ifadelerde parantez kullanmak, kodun anlaşılırlığını artırır:

     İç İçe Kullanımda Dikkat: İç içe ternary operatörleri kullanırken, kodun okunabilirliğini korumak için parantezlere dikkat edin:
     
     
  3. İç İçe Kullanımda Dikkat: İç içe ternary operatörleri kullanırken, kodun okunabilirliğini korumak için parantezlere dikkat edin:

     // Daha okunaklı:
    $sonuç = ($koşul1)
    ? 'Değer1'
    : (($koşul2)
    ? 'Değer2'
    : 'Değer3');
     

  4. Yan Etkilerden Kaçının: Ternary operatör içinde fonksiyon çağrıları yapabilirsiniz, ancak karmaşık işlemlerden kaçınmak daha iyidir.

Sonuç

Ternary operatör, PHP'de koşullu ifadeleri kısa ve öz bir şekilde yazmanızı sağlayan güçlü bir araçtır. Doğru kullanıldığında kodunuzu daha temiz ve okunabilir hale getirebilir. Ancak, karmaşık ifadelerde okunabilirliği korumak için özen gösterilmelidir.

Basit koşullarda ternary operatörü kullanmak, kodunuzu daha kısa ve anlaşılır yapacaktır. Özellikle varsayılan değer atama, boş kontrolleri ve kısa koşullu işlemlerde ternary operatörü tercih etmek iyi bir uygulama olacaktır.

 


Haber : 

Abone Ol