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