تعبير Match والمعاملات المسمّاة
استبدلوا switch المطوّل بـ match واستخدموا المعاملات المسمّاة لتحسين الوضوح
تعبير Match والمعاملات المسمّاة درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.
تعبير match
قدّمت PHP 8.0 التعبير match، وهو بديل موجز عن switch يستخدم المساواة الصارمة (===) ويعيد قيمة.
match مقابل switch
الاختلافات الأساسية: يستخدم match مقارنة صارمة، ولا يسمح بالانتقال التلقائي بين الفروع، وهو تعبير يعيد قيمة.
<?php
$status = 2;
$label = match($status) {
1 => "active",
2 => "inactive",
3 => "banned",
default => "unknown",
};
echo $label; // "inactive"شروط متعددة لكل فرع
افصل قيم match المتعددة بفواصل لمعالجتها بالنتيجة نفسها.
<?php
$code = 404;
$type = match($code) {
200, 201, 202 => "success",
400, 422 => "client error",
404 => "not found",
500, 503 => "server error",
default => "other",
};
echo $type; // "not found"يُطلق match استثناءً عند عدم التطابق
إذا لم يطابق أي فرع ولم يوجد default، تطلق PHP استثناء UnhandledMatchError، بخلاف switch الذي يتابع التنفيذ بصمت.
استخدام match كتعبير
بما أن match يعيد قيمة، يمكنك استخدامه مباشرةً، مثل استخدامه وسيطًا لدالة أو في تعليمة return أو داخل استيفاء سلسلة نصية.
<?php
echo "Status: ".match($active) {
true => "ON",
false => "OFF",
};الوسائط المسماة
تتيح الوسائط المسماة في PHP 8.0 تمرير الوسائط إلى الدالة باستخدام اسم المعلمة، وبأي ترتيب.
<?php
function makeTag(string $tag, string $content, string $class = ""): string {
return "<$tag class=\"$class\">$content</$tag>";
}
echo makeTag(content: "Hello", tag: "p", class: "lead");فوائد الوسائط المسماة
تُحسّن الوسائط المسماة قابلية قراءة الدوال التي تتضمن معلمات كثيرة، وتتيح تخطي المعلمات الاختيارية، وتوضّح ما تمثله كل قيمة.
الوسائط المسماة مع الدوال المضمنة
تعمل الوسائط المسماة مع الدوال المضمنة في PHP أيضًا.
<?php
$arr = [3, 1, 4, 1, 5];
$result = array_slice(array: $arr, offset: 1, length: 3, preserve_keys: true);الجمع بين الوسائط الموضعية والمسماة
يمكنك المزج بين الوسائط الموضعية والمسماة، لكن يجب أن تأتي الوسائط المسماة بعد الوسائط الموضعية.
<?php
str_contains(haystack: "Hello World", needle: "World");
// or positional then named:
str_contains("Hello World", needle: "World");الوسائط المسماة في array_map
تكون الوسائط المسماة مفيدة خصوصًا مع الدوال المضمنة التي تقبل عددًا متغيرًا من الوسائط وتستخدم ترتيبًا مربكًا للمعلمات.
استخدام match في التعليمات البرمجية الفعلية
استبدل سلاسل if/elseif الطويلة بـ match لتوجيه أساليب HTTP، وربط رموز الحالة، واتخاذ القرارات الشبيهة بالتعدادات.
<?php
$handler = match($_SERVER["REQUEST_METHOD"]) {
"GET" => new GetHandler(),
"POST" => new PostHandler(),
"DELETE" => new DeleteHandler(),
default => throw new InvalidArgumentException("Unsupported method"),
};الملخص
يوفّر match تفرّعًا صارمًا شاملًا لجميع الحالات ودون انتقال تلقائي بين الفروع. وتحسّن الوسائط المسماة قابلية قراءة موضع الاستدعاء. ويمثل كلاهما تحسينًا رئيسيًا في PHP 8.0.
تحقّق سريع
ماذا يحدث عندما لا يطابق أي فرع في match ولا يوجد default؟
الأسئلة الشائعة
هل درس «تعبير Match والمعاملات المسمّاة» مجاني؟
نعم — نص درس «تعبير Match والمعاملات المسمّاة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.
ماذا ستتعلم في «تعبير Match والمعاملات المسمّاة»؟
استبدلوا switch المطوّل بـ match واستخدموا المعاملات المسمّاة لتحسين الوضوح تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟
لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تعبير Match والمعاملات المسمّاة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟
نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعبير Match والمعاملات المسمّاة
- المعامل Nullsafe وأنواع الاتحاد
- التعدادات (Enums)
- Fibers: التزامن التعاوني