المعامل Nullsafe وأنواع الاتحاد
استخدموا ?-> لربط الكائنات القابلة لأن تكون فارغة بأمان وعرّفوا تلميحات أنواع الاتحاد
المعامل Nullsafe وأنواع الاتحاد درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
المعامل nullsafe
قدّمت PHP 8.0 المعامل ?->. إذا كان الطرف الأيسر هو null، تتوقف السلسلة بأكملها عن العمل وتعيد null بدلًا من إطلاق خطأ.
المشكلة التي يحلّها
من دون nullsafe، يتطلب تسلسل الكائنات القابلة لأن تكون null إجراء فحوصات مطوّلة للتحقق من null.
<?php
// Old way:
$city = null;
if ($user !== null && $user->getAddress() !== null) {
$city = $user->getAddress()->getCity();
}
// PHP 8 nullsafe:
$city = $user?->getAddress()?->getCity();استخدام nullsafe مع استدعاءات الأساليب
يُفحص كل معامل ?-> في السلسلة بشكل مستقل. وتوقف أول قيمة null بقية السلسلة.
<?php
$name = $order?->getCustomer()?->getName() ?? "Guest";استخدام nullsafe مع الخصائص
يعمل ذلك مع الوصول إلى الخصائص أيضًا.
<?php
$zip = $user?->address?->zip;لا يتجاوز nullsafe الآثار الجانبية
إذا توقفت سلسلة nullsafe عن العمل، فلن تُنفَّذ استدعاءات الأساليب اللاحقة في السلسلة، وبالتالي لا تحدث أي آثار جانبية.
أنواع الاتحاد
تتيح أنواع الاتحاد في PHP 8.0 التصريح بأن معلمة أو خاصية أو قيمة مُعادة تقبل واحدًا من عدة أنواع.
<?php
function formatId(int|string $id): string {
return (string) $id;
}أمثلة على أنواع الاتحاد
أنواع الاتحاد الشائعة عمليًا:
<?php
function process(int|float $amount): float {
return (float) $amount;
}
function findUser(int|string $idOrEmail): ?User {
// search by ID or email
}الأنواع القابلة لأن تكون null
?Type اختصار لـ Type|null، أي إن القيمة قد تكون من ذلك النوع أو تكون null.
<?php
function greet(?string $name): string {
return "Hello, ".($name ?? "stranger");
}null في أنواع الاتحاد
يمكنك تضمين null صراحةً في نوع اتحاد: int|string|null.
أنواع التقاطع (PHP 8.1)
أضافت PHP 8.1 أنواع التقاطع (A&B)، حيث يجب أن تستوفي القيمة جميع الأنواع في الوقت نفسه. وهذا مفيد لحقن التبعيات الآمن من ناحية الأنواع.
<?php
function process(Iterator&Countable $collection): void {
// $collection must be both Iterator AND Countable
}تحويل النوع مقابل strict_types
من دون declare(strict_types=1)، قد تحوّل PHP القيم تلقائيًا، مثل تحويل "42" إلى 42. أما في الوضع الصارم، فلا تُقبل إلا القيم المطابقة للنوع تمامًا.
الملخص
يلغي المعامل nullsafe (?->) الحاجة إلى فحوصات null المتكررة داخل السلاسل. وتتيح أنواع الاتحاد (int|string) تعريف توقيعات دوال مرنة وآمنة من ناحية الأنواع.
تحقّق سريع
ماذا يعيد المعامل nullsafe إذا أعاد أحد الأساليب في السلسلة القيمة null؟
الأسئلة الشائعة
هل درس «المعامل Nullsafe وأنواع الاتحاد» مجاني؟
نعم — نص درس «المعامل Nullsafe وأنواع الاتحاد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «المعامل Nullsafe وأنواع الاتحاد»؟
استخدموا ?-> لربط الكائنات القابلة لأن تكون فارغة بأمان وعرّفوا تلميحات أنواع الاتحاد تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المعامل Nullsafe وأنواع الاتحاد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعبير Match والمعاملات المسمّاة
- المعامل Nullsafe وأنواع الاتحاد
- التعدادات (Enums)
- Fibers: التزامن التعاوني