تكرار السؤال: …
الإجابة المختصرة
العامل ?? يوفر قيمة بديلة إذا كان المتغير null أو غير معرف، بينما ?-> يسمح باستدعاء الدوال والخصائص بأمان وتجاوز السلسلة إذا كان الكائن null دون رمي خطأ.
الشرح
قديماً كان فحص كائن متداخل يتطلب عدة شروط isset($user) && isset($user->profile). في PHP 8، يسمح عامل ?-> باختصارها إلى $user?->profile?->getAddress()؛ فإذا كانت أي حلقة في السلسلة null، تتوقف المعالجة فوراً وتعيد null. أما ?? فيُستخدم لإعطاء قيمة افتراضية: $name = $user?->name ?? 'Guest'.
مثال بالكود
$country = $order?->customer?->address?->getCountry() ?? "Unknown";أخطاء شائعة
- استخدام ?-> للكتابة أو تعيين الخصائص ($user?->name = 'Ali') وهو أمر غير مدعوم في PHP.