شرح صفوف ومحتوى الفقرة
على عكس 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";