PHP توفر آليات التحكم في سير التنفيذ القياسية — الشروط (, , )، والحلقات (, , )، والتفرع (, ) — بالإضافة إلى بعض الميزات المميزة مثل للمصفوفات و تعبير الحديث.
ifswitchmatchforforeachwhilebreakcontinueforeachmatch<?php
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} else {
$grade = "F";
}
// ternary and null coalescing
$status = $age >= 18 ? "adult" : "minor";
$name = $input ?? "default"; // ?? — use default if null/unset (PHP 7+)
$value ??= "x"; // ??= assign if null (PHP 7.4)
معامل الدمج الفارغ ?? يُستخدم بكثرة في PHP للقيم الافتراضية (يُرجع الجانب الأيمن إذا كان الجانب الأيسر فارغ أو غير معرّف) — وهو أنظف من فحوصات isset().
switch ($day) {
case "Sat":
case "Sun":
$type = "weekend"; break; // ⚠️ break needed or it falls through
default:
$type = "weekday";
}
// match (PHP 8) — cleaner: returns a value, STRICT comparison, NO fall-through
$type = match($day) {
"Sat", "Sun" => "weekend", // multiple values, no break needed
default => "weekday",
};
تعبير match (PHP 8) هو تحسن حديث على switch: يُرجع قيمة، ويستخدم المقارنة الصارمة (===)، وليس فيه سقوط متسلسل (لا حاجة إلى break) — مفضل في الأكواد الجديدة.
for ($i = 0; $i < 10; $i++) { }
foreach ($items as $item) { } // iterate array values
foreach ($map as $key => $value) { } // keys + values — the PHP idiom for arrays
while ($condition) { }
do { } while ($condition);
foreach هي الحلقة الاصطلاحية والأكثر استخداماً في PHP للتكرار على المصفوفات (مع صيغة $key => $value للمصفوفات الترابطية).
foreach ($items as $item) {
if ($item->skip) continue; // skip to next iteration
if ($item->stop) break; // exit the loop
}
سير التحكم هو الآلية الأساسية للتعبير عن المنطق، ويُستخدم في كل برنامج، لذا فإن فهم آليات PHP أمر أساسي يُستخدم يومياً.
معظمها قياسي، لكن بعض النقاط الخاصة بـ PHP مهمة: foreach هي الحلقة الاصطلاحية السائدة للتكرار على المصفوفات في PHP (مع صيغة $key => $value للخرائط)؛ معامل الدمج الفارغ ?? (و ??=) يُستخدم بكثرة لمعالجة القيم الافتراضية بطريقة نظيفة (وهي عادة PHP مميزة)؛ و تعبير match الحديث (PHP 8) هو تحسن مهم على switch — يُرجع قيمة، ويستخدم المقارنة الصارمة، ويزيل أخطاء السقوط المتسلسل (المشكلة الكلاسيكية في switch وهي نسيان break).
معرفة هذه الآليات، والتفضيل للأشكال الحديثة والأكثر أماناً (match بدلاً من switch، ?? للقيم الافتراضية) هو معرفة يومية لكتابة منطق PHP نظيف واصطلاحي وخالي من الأخطاء، مما يعكس الإلمام بالأساسيات وتحسينات PHP الحديثة.