انتقل إلى محتوى الدرس

Default Arm and UnhandledMatchError الفرع الافتراضي وخطأ عدم التطابق

تعلّم تعبير المطابقة الحديث match في PHP 8 بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
1 صفوف تعليمية
PHP
1 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

على عكس switch، يشترط تعبير match الشمولية الكاملة (Exhaustiveness): فإذا لم يتطابق أي مسار ولم يوجد مسار default، يطلق PHP خطأ UnhandledMatchError فوراً!

  • بما أن match ملزم بإرجاع قيمة، فلا يمكنه التخطي بصمت عند عدم تطابق أي مسار.
  • إطلاق خطأ UnhandledMatchError يكشف القيم غير المتوقعة فوراً بدلاً من تمرير بيانات ناقصة بصمت.
  • أضف دائماً المسار الافتراضي default => ... عندما تكون القيم المدخلة مفتوحة الاحتمالات.

تضمين المسار default => "127.0.0.1" يضمن حصول $dbHost دائماً على عنوان صالح دون المخاطرة بحدوث UnhandledMatchError.

PHP
<?php

$env = "staging";

$dbHost = match ($env) {
    "production" => "db.prod.internal",
    "staging", "testing" => "db.stage.internal",
    default => "127.0.0.1",
};

echo "Connected host: $dbHost\n";