عملگر :? در php

احتمالا این عملگر رو میشناسین. ساده شده همون عملگر ? و : هست، که بخش دومش حذف شده. مثلا دو خط زیر برابر هستن.

$a ? $a : $b
$a :? $b

ولی یه فرق ریز دارن. این مثال رو ببینید.

a() ? a() : b()
a() ?: b()

فرقش اینه که تو خط اول، تابع a دو بار اجرا میشه، که درست نیست. قدیم تر راه درستش این بود که اول نتیجه تایع a رو داخل یه متغیر ذخیره میکردیم و بعد نتیجه رو چک میکردیم تا تابع دو بار اجرا نشه، ولی خط دوم این مساله رو ساده‌تر کرده و فقط یک بار تابع a رو اجرا میکنه.

این قضیه رو من تازه دقت کردم، و رو سیستم خودم رو php7.4 و php5.6 تست کردم و درست کار میکنه.

خارجی‌ها به این نوع پست‌ها میگن TIL که مخفف Today I Learned هست. پست‌های کوچیکی که در مورد یه نکته کوچیک که امروز یاد گرفتی میزاری.