در این درس، روش‌های زیر را که برای کوتاه‌تر کردن و خواندن کدهای طولانی if-else استفاده می‌شود، مورد بحث قرار می‌دهیم. اپراتور PHP Trinaryبا مثال هایی یاد خواهید گرفت که چیست و چگونه از آن استفاده کنید.

اپراتور PHP Trinary یک عملگر شرطی است که در هنگام انجام مقایسه ها و شرایط، طول کد را کاهش می دهد. این عملگر جایگزین مهمی برای استفاده از if-elseif-else یا تودرتو در if else است. این عملگر سه تایی نامیده می شود زیرا سه عملوند می گیرد.

  • اپراتور PHP Trinaryعملوندهایی که می گیرد به شرح زیر است:
    شرط
  • نتیجه برای true (در صورت درست بودن شرط، true را برمی گرداند)
  • نتیجه برای نادرست

اپراتور PHP Trinary نحو به شرح زیر است:

$variable = (condition) ? (statement1) : (statement2);

شرط به جای شرط اضافه می شود. اگر شرط عبارت 1 درست باشد، داده‌ای که باید اضافه شود نوشته می‌شود. اگر شرط دستور2 false را برگرداند، داده ای که باید اضافه شود نوشته می شود.

اپراتور PHP Trinary

در اولین مثال ما اپراتور PHP Trinary'ما شاهد خواهیم بود که چقدر بیانیه if-else را کوتاه می کند. اگر درست باشد، می‌خواهیم نام دکمه را "Log Out" بسازیم، زیرا کاربر وارد شده است و اگر کاربر وارد نشده باشد، می‌خواهیم نام دکمه را "Log In" بگذاریم تا کاربر بتواند وارد شود. فرض می‌کنیم که متغیر is_user_logged_in اگر کاربر وارد سیستم شده باشد مقدار true و اگر کاربر وارد شده باشد شرط false داده شود. متغیر is_user_logged_in درست است یا خیر. از آنجایی که متغیر ture نبود، کدهای شرط اول اجرا نشدند و به بلوک else منتقل شدند. همانطور که می دانید، کدهای موجود در بلوک else در صورت نامعتبر بودن سایر شرایط اجرا می شوند. در این حالت کدهای موجود در بلوک else اجرا و خروجی «ورود به سیستم» ارائه شد.

// 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 اپراتور PHP Trinaryمی توانیم استفاده کنیم. بیایید این را با 2 مثال ببینیم.

$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 (اپراتورهای سه‌گانه زنجیره‌ای)

در این مثال اپراتور PHP Trinary یک اپراتور سه تایی جدید در آن وجود دارد. به همین دلیل است که این بیان اپراتور PHP Trinary ما آن را عملگرهای سه تایی زنجیره ای می نامیم.  حال بیایید این مثال را درک کنیم: فرض می کنیم که متغیر $is_logged_in اگر کاربر وارد شده باشد مقدار true و در غیر این صورت false داده می شود. متغیر $balance موجودی کاربر است، متغیر $price قیمت محصول است. متغیر $message پیامی است که به کاربر نشان خواهیم داد. اگر متغیر is_logged_in در متغیر $message درست باشد، شرط به اجرا ادامه خواهد داد. اگر نادرست باشد، داده "برای خرید محصول ابتدا وارد حساب خود شوید" به متغیر $message اختصاص داده می شود. این شرط به اجرای خود ادامه داد زیرا متغیر $is_logged_in درست بود. به عنوان یک شرط در عملگر سه تایی دوم، ما پرسیدیم که آیا داده های متغیر $balance معادل داده های متغیر $price است یا خیر. داده‌های متغیر $balance 24 است، داده‌های متغیر $price 30 است. از آنجایی که آنها معادل نیستند، شرط true برنمی‌گرداند، آن را false برمی‌گرداند. اپراتور PHP Trinaryداده اول فقط در صورتی تخصیص داده می شود که شرط true باشد، داده دوم در صورتی تخصیص داده می شود که شرط false باشد. شرط نادرست برگردانده شد و به متغیر $message داده "شما بودجه کافی برای خرید محصول ندارید" اختصاص داده شد. متغیر $message را با echo چاپ کردیم.

$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