عامل Null Coalescing
جزء من قسم Fundamentals في رحلة PHP على Coddy — الدرس 31 من 71.
يوفر عامل دمج القيم الفارغة (??) طريقة ملائمة لاستخدام قيمة افتراضية عندما تكون قيمة المتغير null أو غير موجودة. وهذا مفيد بشكل خاص عند التعامل مع البيانات التي قد تكون مفقودة.
تضع الصيغة ?? بين المتغير المراد التحقق منه والقيمة الاحتياطية:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>يتحقق PHP مما إذا كان $username هو null. وبما أنه كذلك، يعيد العامل "Guest" بدلاً من ذلك. إذا كان لدى $username قيمة، فسيتم استخدام تلك القيمة.
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>يعمل عامل دمج القيم الفارغة (null coalescing operator) أيضاً عندما لا يكون المتغير قد تم تعريفه على الإطلاق، دون التسبب في حدوث خطأ:
<?php
// لم يتم تعريف color$ في أي مكان
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>هذا يجعل ?? أكثر ترتيباً من استخدام العامل الثلاثي (ternary operator) مع فحوصات isset(). إنه مثالي لتوفير قيم افتراضية منطقية عندما تكون البيانات مفقودة.
التحدي
سهلاقرأ قيمتين من المدخلات: سلسلة نصية nickname وسلسلة نصية theme.
استخدم عامل دمج القيم الفارغة (null coalescing operator) للتعامل مع القيم التي قد تكون مفقودة:
- أنشئ متغيرًا
$userNicknameوقم بتعيينه إلىnull. ثم استخدم عامل دمج القيم الفارغة لتعيين قيمة$displayNicknameلتكون قيمة$userNicknameإذا كانت موجودة وليست null، وإلا فاستخدم قيمة المدخلnickname. - أنشئ متغيرًا
$userThemeوقم بتعيينه لقيمة المدخلtheme. استخدم عامل دمج القيم الفارغة لتعيين قيمة$selectedThemeلتكون قيمة$userThemeإذا كانت موجودة وليست null، وإلا فاستخدمdarkكقيمة افتراضية. - استخدم عامل دمج القيم الفارغة مباشرة مع متغير غير معرف
$language(لا تقم بتعريفه) لتعيين قيمة$displayLanguageلتكون قيمة$languageإذا كانت موجودة، وإلا فاستخدمEnglishكقيمة افتراضية.
اطبع كل نتيجة في سطر جديد بهذا الترتيب: $displayNickname، $selectedTheme، $displayLanguage.
مثال:
إذا كانت المدخلات هي Player1 و light، يجب أن تكون المخرجات:
Player1
light
Englishإذا كانت المدخلات هي GuestUser و blue، يجب أن تكون المخرجات:
GuestUser
blue
Englishورقة مرجعية
يوفر معامل دمج القيم الفارغة (??) قيمة افتراضية عندما يكون المتغير null أو غير موجود.
الصيغة:
$result = $variable ?? "default value";إذا كان $variable هو null، فسيتم استخدام القيمة الافتراضية:
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guestإذا كان لدى $variable قيمة، فسيتم استخدام تلك القيمة:
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Aliceيعمل المعامل أيضًا مع المتغيرات غير المعرفة دون التسبب في خطأ:
// $color غير معرف
$selectedColor = $color ?? "blue";
echo $selectedColor; // blueجرّب بنفسك
<?php
// قراءة المدخلات
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: اكتب الكود الخاص بك أدناه
// 1. قم بإنشاء $userNickname واضبطه على null، ثم استخدم ?? لتعيين $displayNickname
// 2. قم بإنشاء $userTheme بمدخل السمة (theme)، ثم استخدم ?? لتعيين $selectedTheme (الافتراضي: 'dark')
// 3. استخدم ?? مع $language غير المعرف لتعيين $displayLanguage (الافتراضي: 'English')
// طباعة النتائج (كل منها في سطر جديد)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4معاملات المقارنة والمنطق
معاملات المقارنةالمساواة والتطابقالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيط2المتغيرات وأنواع البيانات
الأرقامالنصوص وعلامات الاقتباسالقيم المنطقية (Booleans)قواعد التسميةملخص - تهيئة المتغيراتالمتغيرات الفارغةدمج النصوصاستقبال مدخلات المستخدمتحويل أنواع البيانات5المنطق الشرطي
جملة Ifجملة If - Elseالعامل الثلاثي (Ternary Operator)عامل Null Coalescingجملة Switchمراجعة - اتخاذ القرارات3المعاملات الأساسية
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسالتعيين المركبالزيادة والنقصانأسبقية المعاملاتمراجعة - الحسابات البسيطةمعاملات النصوص