بنى التحكم في PHP
تتكون جميع شيفرات PHP من سلسلة من العبارات (statements)، ويمكن للعبارة أن تكون إسنادًا (assignment) أو استدعاءً لدالّة، أو حلقة تكرارية، أو عبارة شرطية أو حتى عبارة لا تقوم بأي عمل على الإطلاق (عبارة فارغة).
تنتهي العبارات عادة بالفاصلة المنقوطة (;
)، ويمكن تجميع العبارات بإحاطتها بالأقواس المعقوفة ({}
) لتصبح مجموعة عبارات (statement-group)، والتي تعدّ بدورها عبارات أيضًا.
سنفصل الحديث في هذا الفصل عن أنواع متعددة من العبارات.
if
بنية if
هي واحدة من أهم الميزات المتوفّرة في العديد من اللغات البرمجية، ومن ضمنها PHP. إذ تتيح تنفيذ أجزاء من الشيفرة اعتمادًا على شروط معينة.
else
قد ترغب في كثير من الأحيان تنفيذ عبارة معينة عند تحقق شرط معين وتنفيذ عبارة أخرى في حال عدم تحقق الشرط. هنا يأتي دور else
، والتي تعمل على تمديد عبارة if
لتنفيذ عبارة أخرى في حال أدّى حساب عبارة if
إلى النتيجة FALSE
.
elseif/else if
كما هو واضح من الاسم فإنّ هذه العبارة هي مزيج من if
و else
، وكما هو الحال مع else
، يمكن توسيع عبارة if
لتنفيذ عبارة أخرى في حال كانت نتيجة تعبير if
هي FALSE
. ولكن، على العكس من else
، فإن elseif
تنفذ ذلك التعبير البديل في حالة واحدة فقط وهي أن تكون نتيجة التعبير الشرطي المتعلق بعبارة elseif
هي TRUE
.
صيغة بديلة لبنى التحكم
تقدّم PHP صيغة مختلفة لبعض بنى التحكّم المتوفّرة فيها، وهي if
و while
و for
و foreach
و switch
. وفي جميع الأحوال يمكن استخدام الصيغة البديلة بوضع نقطتين رأسيتين (:
) بدلًا من القوس المعقوف في بداية العبارة ووضع العبارة endif;
أو endwhile;
أو endfor;
أوendforeach;
أو endswitch;
في النهاية حسب الحاجة.
while
تعد حلقات while
التكرارية أبسط أنواع الحلقات في PHP، وتعمل بطريقة مماثلة لنظيرتها في لغة C.
do-while
حلقات do-while
مشابهة جدًّا لحلقات while
، باستثناء أنّها عملية التحقق من الشرط تحدث في نهاية الدورة بدلًا من بدايتها. ما يميز هذه الحلقات عن حلقات while هو أنّ الدورة الأولى في حلقات do-while
ستنفّذ في جميع الأحوال (تحدث عملية التحقق في نهاية الدورة فقط) في حين أن الدورة الأولى في حلقات while
قد لا تنفّذ بالضرورة (تحدث عملية التحقق في بداية كل دورة، وإن كانت النتيجة FALSE
منذ البداية تتوقف الحلقة عن العمل مباشرة).
for
تعدّ حلقات for
النوع الأكثر تعقيدًا من الحلقات في PHP، وهي مشابهة لنظيرتها في لغة C.
foreach
تقدّم بنية foreach
طريقة سهلة للتنقل بين عناصر المصفوفات، وتعمل هذه البنية مع المصفوفات والكائنات فقط، ويؤدي استخدامها مع متغير ذي نوع بيانات مختلف أو متغير غير مهيئ إلى إطلاق خطأ.
break
تنهي break
تنفيذ حلقات for
أو foreach
أو while
أو do-while
أو بنية switch
.
continue
تستخدم continue
في الحلقات التكرارية لتجاوز ما يأتي بعدها في الحلقة التكرارية والاستمرار في تنفيذ الشيفرة حسب الشرط المعتمد في الحلقة ثم الانتقال إلى بداية الدورة التالية.
switch
تشبه عبارة switch
سلسلةً من عبارات if
مطبّقة على نفس التعبير. قد تحتاج في بعض الأحيان إلى مقارنة نفس المتغير (أو التعبير) مع قيم مختلفة (حالات cases)، وتنفيذ شيفرة مختلفة بالاعتماد على ذلك، وهذه هي وظيفة عبارة switch
.
declare
تستخدم بنية declare
لتعيين موجّهات التنفيذ (execution directives) لكتلة من الشيفرة، وصيغة declare
مشابهة لبنى التحكم في تدفق الشيفرة.
return
تعيد تنفيذ البرنامج إلى الوحدة التي قامت بالاستدعاء، وسيستمر التنفيذ إلى التعبير الذي يلي تعبير الاستدعاء.
require
العبارة require
مطابقة للعبارة include
باستثناء أنّها تطلق خطأ من نوع E_COMPLE_ERROR
في حال فشلها في جلب الملف.
include
تعمل عبارة include على تضمين ومعالجة الملف المحدّد.
require_once
عبارة require_once
مطابقة للعبارة require
باستثناء أن PHP ستتحقق مما إذا كان الملف مضمّنًا أم لا، وذلك لتجنّب تضمينه (require) مرة أخرى.
include_once
تُضمِّن العبارة include_once
الملفّ المحدد وتعالجه أثناء تنفيذ الشيفرة. هذه السلوك مشابه لعبارة include
والفرق الوحيد هنا هو إن كانت شيفرة ذلك الملف مضمّنة من قبل فإنّها لن تُضمِّنَه مرة أخرى، وترجع include_once
القيمة TRUE
، وهذا السلوك متوقع من اسم العبارة.
goto
يمكن استخدام عامل goto
للانتقال إلى قسم آخر في البرنامج.