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 اگر نظری دارید و یا نکته ای به ذهنتان میرسد که تکمیل کننده بحث هست خوشحال میشویم در بخش نظرات با ما در میان بگذارید .
بسیار آموزنده و مفید بود
سلام وقت بخیر
ممنون از توجه شما دوست عزیز
ابتدا تشکر میکنم بابت این مطلب آموزشی بسیار عالی و آموزنده
یه سوال هم ذهن من رو درگیر کرده که شاید برای خیلی ها مهم نباشه. اما از روی کنجکاوی میپرسم:
روش اول از خانواده C الگوبردای شد
روش دوم چطور؟ باز هم از زبان خاص دیگه ای به PHP منتقل شده یا این مورد رو PHP خودش ایجاد کرده؟
اپراتور ?? در زبان های دیگه هم وجود داره و php هم الان اونو داره. اینکه از کجا اومده خیلی مهم نیست. مهم اینه که الان در زبان هست و راحتتر از گذشته می تونید مقادیر نال رو چک و استفاده کنید.
با تشکر از مطلب مفیدتون
سلام مطلب جالبی بود 🙂
بسیار عالی
بسیارسپاسگزارم
خواهش میکنم دوست عزیز . موفق باشید
ممنون. مفید بود
نظر لطفتونه . موفق باشید
بابت مطالب مفیدی که که میذارین ، مخصوصا ویژگی های جدید درphp7 سپاسگزارم
از نظر لطفتون ممنونیم . موفق و پیروز باشید