یکی از ویژگی های خوبی که در php ورژن 8 ارائه شده قابلیت عملگر Null safe هست که خیلی جالبه
قبلا اگر ما میخواستیم از یک ابجکت مقداری که وجود ندارد رو بگیریم با خطا مواجه میشدیم ولی با اضافه شدن این ویژگی میتونیم این خطا رو مدیریت کنیم
$country = $customer->getAddress()->getCountry(); // Fatal error: Uncaught Error: Call to a member function getCountry() on null
در کد بالا متد ()Customer::getAddress
میتواند نال باشد و اگر نال باشد با خطا مواجه میشیم
برای حل این مشکل php عملگر Null safe رو معرفی میکنه که به صورت زیر میتونیم ازش استفاده کنیم و از بروز خطا جلو گیری کنیم
$country = $customer?->getAddress()?->getCountry();
در مثال بالا وقتی متد ()Customer::getAddress
نال باشد دیگر متد بعدی اجرا نمیشود
اگر عملگر (?->)null-safe با مقدار null مواجه شود، بقیه عبارت را نادیده میگیرد و بلافاصله و بدون ایجاد خطا، null را برمیگرداند
این بود عملگر null safe .
البته نا گفته نماند که عملگر Null coalescing که در ورژن ۷ php ارائه شده بود برای ابجکت قابل استفاده نبود و فقط برای پراپرتی ها جواب میداد.
$obj = new stdClass; echo $obj->foo->bar->baz ?? 12; // 12
امیدوارم مفید بوده باشه.