عبدالفتاح الصلوي

تعبير match الشرطي في Php 8

كتبها : عبدالفتاح الصلوي / في رصيف : PHP

تعبير match الشرطي في Php 8

تم إصدار PHP 8 في 26 نوفمبر 2020. حيث تم إضافة العديد من الميزات الجديدة والتحسينات في الأداء.
كان من ضمن الإضافات تعبير match الشرطي.

ماذا تعرف عن match ؟


 match هو تعبير شرطي منطقي شبيه بجملة الشرط المتعدد switch . حيث يتم في match فحص الشرط  وإرجاع الناتج وإذا لم يطابق الشرط أحد القيم الموجودة يعيد قيمة افتراضية يتم تحديدها مسبقاً.
مثال
    $result = match($select) {
        0 => "user",
        1 => "admin",
        2,3,4 => "super admin",
       default => 'guest',
    };

مالفرق بين match و switch ؟  

  - تسمى match (تعبير شرطي).  اي ان الناتج منه  يمكن اسناده الى متغير او طباعته او ما إلى ذلك .
  - بينما switch (عبارة شرط)  لا تعيد الناتج مباشرة  وفيها جمل وتعبيرات تنتهي ب (;) ويتم انهاء كل جزء فيها بعبارات التوقف مثل break.-
مما يعني أن match أقصر .

- في match يتم استخدام الفحص الصارم للقيم، مما يعني فحص النوع بالإضافة إلى القيمة وكأننا نقارن باستخدام التكافؤ (===) . فالقيمة  '1'  لا تساوي ١ لان الأول نص والثاني رقم. لذا فناتج التعبير لن يتطابق إذا لم تتطابق أنواع البيانات.
بينما في switch لا يهم نوع البيانات فكأننا نقوم بالمقارنة باستخدام (==) وهنا 1='١' يعيد true .

- في match يمكننا الفصل بين القيم باستخدام الفاصلة (,) كما المثال 300, 200 وهنا اذا تطابقت  احداهما فسوف يتحقق الشرط (تكتب في سطر واحد). بينما في switch  نستخدم  case ويمكن وجود عدة حالات متتالية في حال اردنا ارجاع نفس الناتج  مع ضرورة استخدام  break ,بين الحالات المختلفة  أو ما يوازيها  .

 - اذا لم نقم بكتابة default في match ولم يتطابق التعبير سيتم رمي استثناء من نوع UnhandledMatchError. بينما في switch لن يحدث شيء.

- يمكن أن يتم رمي استثناء في بنية match مباشرة . مثال :

    $message = match ($statusCode) {
    200 =>
    null,
    500 => throw new ServerError(),
    default => 'unknown status
    code',
};



 استخدام match , switch ؟

يعود تفضيل استخدام إحد التعبيرين إلى المبرمج، ولكن هناك حالتين اعتقد انهما يمكن أن يؤخذا بعين الإعتبار عن كتابة الكود :
- إذا أردنا إعادة ناتج الشرط، والفحص الصارم ، فالطبع يفضل استخدام match.
- في الجمل متعددة الأسطر استخدام  switch أكثر عملية.

للمزيد من الأمثلة عن match واستخداماتها  هذا رابط التوثيق الرسمي


علامات ذات صلة :