Bu derste, uzun if-else kodlarını daha kısa ve daha okunabilir hale getirmek için kullanılan PHP Ternary Operator‘un ne olduğunu ve nasıl kullanıldığını örneklerle öğreneceksiniz.
PHP Ternary Operator karşılaştırmaları ve koşulları gerçekleştirirken kodun uzunluğunu azaltan bir koşullu operatördür. Bu operatör, if-elseif-else veya iç içe if else kullanımına önemli bir alternatiftir. Üç operand aldığı için üçlü operator (ternary operator) olarak adlandırılır.
- PHP Ternary Operator‘un aldığı operandlar sırasıyla aşağıdaki gibidir:
condition (koşul) - result for true (koşul geçerliyse -true döndürürse- sonuç)
- result for false (koşul geçersizse -false döndürürse- sonuç
PHP Ternary Operator söz dizimi aşağıdaki gibidir:
$variable = (condition) ? (statement1) : (statement2);
Condition yerine koşul eklenir. statement1 için koşul true döndürürse eklenecek veri, statement2 için koşul false döndürürse eklenecek veri yazılır.
PHP Ternary Operator (Üçlü Operatör)
İlk örneğimizde PHP Ternary Operator’un if-else ifadesini ne kadar kısalttığına şahit olacağız. Eğer true ise kullanıcı giriş yaptığı için button adını “Çıkış Yap” yapmak, kullanıcı giriş yapmamışsa kullanıcının giriş yapabilmesi için button adını “Giriş Yap” yapmak istiyoruz. Kullanıcı giriş yaptıysa is_user_logged_in değişkenine true, giriş yapmadıysa false değeri verildiğini varsayalım. if koşulunda is_user_logged_in değişkeninin true olup olmadığını sorguladık. Değişken ture olmadığı için ilk koşuldaki kodlar yürütülmedi ve else bloğuna geçildi. Bildiğiniz üzere else bloğundaki kodlar, diğer tüm koşullar geçersizse yürütülür. Bu durumda else bloğundaki kodlar yürültüldü ve “Giriş Yap” çıktısı sağlandı.
// if else ile uzun ifade
$is_user_logged_in = false;
if ($is_user_logged_in === true) {
echo $button_name = 'Çıkış Yap';
} else {
echo $button_name = 'Giriş Yap';
}
// Çıktı: Giriş Yap
// ternary operator ile kısa ifade
$is_user_logged_in = false;
echo $button_name = $is_user_logged_in ? 'Çıkış Yap' : 'Giriş Yap';
// Çıktı: Giriş Yap
PHP echo oluşumuyla PHP Ternary Operator‘u kullanabiliriz. 2 örnekle bunu görelim.
$number = 20;
echo ($number > 15) ? "15'ten daha büyük" : "15'ten daha büyük değil";
// Çıktı: number değişkeninin verisi 15'ten daha büyük
$number = 5;
echo ($number == 10) ? "number değişkeninin verisi 10'a eşit" : "number değişkeninin verisi 10'a eşit değil";
// Çıktı: number değişkeninin verisi 10'a eşit değil
PHP Ternary Operator Zincirleme (Chaining Ternary Operators)
Bu örnekte PHP Ternary Operator içerisinde yeni bir ternary operator daha var. Bu yüzden bu ifadeye PHP Ternary Operator zincirleme (chaining ternary operators) diyoruz. Şimdi bu örneği anlayalım: Kullanıcı giriş yapmışsa $is_logged_in değişkenine true, yapmamışsa false değeri verildiğini varsayalım. $balance değişkeni kullanıcının bakiyesi, $price değişkeni ürünün fiyatı. $message değişkeni ise kullanıcıya göstereceğimiz mesaj. $message değişkeninde is_logged_in değişkeni true ise koşul çalışmaya devam edecek, false ise, $message değişkenine “Ürünü satın almak için önce hesabınıza giriş yapın” verisi atanacak. $is_logged_in değişkeni true olduğu için koşul çalışmaya devam etti. İkinci ternary operator’de koşul olarak $balance değişkeninin verisinin $price değişkeninin verisi ile denk olup olmadığını sorguladık. $balance değişkeninin verisi 24, $price değişkeninin verisi 30. Denk olmadığı için koşul true döndürmedi, false döndürdü. PHP Ternary Operator‘un ilk verisi sadece koşul true döndürürse atanıyordu, koşul false döndürürse ikinci veri atanıyordu. Koşul false döndürdü ve $message değişkenine “Ürünü satın almak için yeterli bakiyeniz yok” verisi atandı. echo ile $message değişkenini yazdırdık.
$is_logged_in = true; // kullanıcı giriş yaptı mı?
$balance = 24; // bakiye
$price = 30; // ürün fiyatı
$message = $is_logged_in
? ($balance === $price
? 'Ürünü satın almak için yeterli bakiyeniz var'
: 'Ürünü satın almak için yeterli bakiyeniz yok')
: 'Ürünü satın almak için önce hesabınıza giriş yapın';
echo $message;
// Ürünü satın almak için yeterli bakiyeniz yok