با عملگر null coalescing operator (؟؟) در php 7 آشنا شوید !

null coalescing operator

isset() و شروط تک خطی

اگر برنامه نویس php باشید قطعا با دستور ()isset آشنایی دارید و میدانید که این دستور در php برای اطمینان از این مورد استفاده میشود که آیا متغیری که مد نظر ماست ،  وجود دارد یا خیر .

از شروط تک خطی هم اکثر برنامه نویسان استفاده میکنند و با آن آشنایی دارند .

به عنوان مثال مورد زیر را در نظر بگیرید :

$user = isset($_GET['user']) ? $_GET['user'] : 'no user';

در مثال بالا بررسی شده که آیا مقدار “user” در متغیر سراسری  GET وجود دارد یا خیر . این مورد با ()isset مورد بررسی قرار گرفته است و اگر “user” در متغیر سراسری  GET وجود داشت متغیر name با مقدار آن  برابر خوهد شد .

اما بعد از این ، از شرط تک خطی استفاده شده که اگر مقدار “user” در متغیر سراسری GET وجود نداشت مقدار “no user” برای متغیر name در نظر گرفته شود .

لازم به ذکر است که به عملگر (?) که در شروط تک خطی از آن استفاده میکنیم ، ternary operator گفته میشود .

مواردی که در بالا ذکر شد مربوط به php 5 میشوند .

در php 7 عملگر جدیدی اضافه شده که این امور را برای ما ساده‌تر میکند . در ادامه با این عملگر جدید آشنا میشویم .

عملگر null coalescing operator (؟؟)

در مثال قبل ، استفاده از ()isset و شروط تک خطی را یاد آوری کردیم و اکنون به عملگر جدیدی که در php 7 اضافه شده میپردازیم .

این مورد در php 7 اضافه شده است و کاری که در مثال قبل توسط  ()isset و (?) انجام دادیم را با هم انجام میدهد . برای مثال مورد زیر را در نظر بگیرید :

$user = $_GET['user'] ?? 'no user';

نتیجه همانند نتیجه مثال قبل خواهد بود اما حجم کد کمتر شده است . در اینجا اگر کلید user در متغیر سراسری GET موجود نباشد ، مقدار no user برگشت داده میشود .

خاصیت مهم دیگر این عملگر جدید آن است که میتوان در حالت زنجیروار(chaining) هم از آن استفاده کرد .

مثلا اگر بخواهیم وجود کلید user را هم در متغیر سراسری POST و هم GET بررسی کنیم و در صورت نبودن کلید user در هر دو مقدار no user را برگردانیم میتوانیم به صورت زیر عمل کنیم :

$user = $_GET['user'] ?? $_POST['user'] ?? 'no user';

این بود توضیحات عملگر (??) در php 7 اگر نظری دارید و یا نکته ای به ذهنتان میرسد که تکمیل کننده بحث هست خوشحال میشویم در بخش نظرات با ما در میان بگذارید .

 

 
ارسال دیدگاه
ما همه سوالات و دیدگاه ها رو می خونیم و پاسخ میدیم
۱۳ دیدگاه
پرتو کلینیک ۰۵ شهریور ۱۳۹۹، ۱۶:۱۷
بسیار آموزنده و مفید بود
فائقه نامور ۱۱ شهریور ۱۳۹۹، ۲۰:۱۰
سلام وقت بخیر
ممنون از توجه شما دوست عزیز
Seyed Reza Bazyar ۲۷ مهر ۱۳۹۷، ۲۲:۳۲
ابتدا تشکر میکنم بابت این مطلب آموزشی بسیار عالی و آموزنده
یه سوال هم ذهن من رو درگیر کرده که شاید برای خیلی ها مهم نباشه. اما از روی کنجکاوی میپرسم:
روش اول از خانواده C الگوبردای شد
روش دوم چطور؟ باز هم از زبان خاص دیگه ای به PHP منتقل شده یا این مورد رو PHP خودش ایجاد کرده؟
لقمان آوند ۲۹ مهر ۱۳۹۷، ۱۴:۲۹
اپراتور ?? در زبان های دیگه هم وجود داره و php هم الان اونو داره. اینکه از کجا اومده خیلی مهم نیست. مهم اینه که الان در زبان هست و راحتتر از گذشته می تونید مقادیر نال رو چک و استفاده کنید.
نگار مرادی ۰۴ تیر ۱۳۹۷، ۱۲:۳۹
با تشکر از مطلب مفیدتون
علیرضا ۲۵ خرداد ۱۳۹۷، ۰۹:۵۹
سلام مطلب جالبی بود :)
Lizard Gold ۱۲ خرداد ۱۳۹۷، ۱۲:۳۶
بسیار عالی
امیرجلالی ۰۷ خرداد ۱۳۹۷، ۱۵:۲۵
بسیارسپاسگزارم
سجاد شاعر ۰۸ خرداد ۱۳۹۷، ۱۷:۳۰
خواهش میکنم دوست عزیز . موفق باشید
mahdi98 ۰۵ خرداد ۱۳۹۷، ۰۷:۰۱
ممنون. مفید بود
سجاد شاعر ۰۵ خرداد ۱۳۹۷، ۱۶:۰۸
نظر لطفتونه . موفق باشید
mohammad ۰۳ خرداد ۱۳۹۷، ۱۸:۲۶
بابت مطالب مفیدی که که میذارین ، مخصوصا ویژگی های جدید درphp7 سپاسگزارم
سجاد شاعر ۰۵ خرداد ۱۳۹۷، ۱۶:۱۲
از نظر لطفتون ممنونیم . موفق و پیروز باشید