Skip to content

1. استخدام بنية MVC في تطبيقات الويب/PHP

ملف PDF للوثيقة متاح |هنا|.

كود المستند متاح |هنا|.

يهدف نمط MVC (Model-View-Controller) إلى الفصل بوضوح بين طبقات العرض والمعالجة والوصول إلى البيانات. سيتم تنظيم تطبيق الويب الذي يتبع هذا النمط على النحو التالي:

غالبًا ما يُطلق على هذه البنية اسم بنية ثلاثية الطبقات أو ثلاثية المستويات:

  • واجهة المستخدم هي العرض (V)
  • منطق التطبيق هو وحدة التحكم (C)
  • مصادر البيانات هي النموذج (M)

غالبًا ما تكون واجهة المستخدم عبارة عن متصفح ويب، ولكنها قد تكون أيضًا تطبيقًا مستقلًا يرسل طلبات HTTP إلى خدمة الويب عبر الشبكة ويقوم بتنسيق النتائج التي يتلقاها. تتكون منطقية التطبيق من نصوص برمجية تعالج طلبات المستخدم. غالبًا ما يكون مصدر البيانات قاعدة بيانات، ولكنه قد يكون أيضًا ملفات مسطحة بسيطة، أو دليل LDAP، أو خدمة ويب عن بُعد، وما إلى ذلك. من مصلحة المطور الحفاظ على درجة عالية من الاستقلالية بين هذه الكيانات الثلاثة بحيث إذا تغير أحدها، لا يتعين على الاثنين الآخرين التغيير، أو يتغيران بشكل طفيف فقط.

تعد بنية MVC مناسبة تمامًا لتطبيقات الويب المكتوبة بلغات موجهة للكائنات. لغة PHP (4.x) ليست موجهة للكائنات. ومع ذلك، يمكن للمرء أن يبذل جهدًا لتنظيم الكود وبنية التطبيق بحيث تتوافق بشكل أوثق مع نموذج MVC:

  • سنضع منطق الأعمال الخاص بالتطبيق في وحدات منفصلة عن تلك المسؤولة عن إدارة الحوار بين الطلب والاستجابة. تصبح بنية MVC كما يلي:

داخل كتلة [منطق التطبيق]، يمكننا التمييز بين:

  • البرنامج الرئيسي أو وحدة التحكم، التي تعمل كنقطة دخول للتطبيق.
  • كتلة [الإجراءات]، وهي مجموعة من البرامج النصية المسؤولة عن تنفيذ الإجراءات التي يطلبها المستخدم.
  • كتلة [فئات الأعمال]، التي تجمع وحدات PHP الضرورية لمنطق التطبيق. هذه الوحدات مستقلة عن العميل. على سبيل المثال، لا تحتاج الدالة التي تحسب الضريبة بناءً على معلومات معينة مقدمة كمعلمات إلى الاهتمام بكيفية الحصول على تلك المعلومات.
  • كتلة [Data Access Classes]، التي تحتوي على وحدات PHP التي تسترد البيانات التي يحتاجها وحدة التحكم، وغالبًا ما تكون بيانات ثابتة (قواعد البيانات، الملفات، إلخ).
  • مولدات العرض التي ترسل العروض كاستجابة للعميل.

في أبسط الحالات، غالبًا ما يتم اختزال منطق التطبيق إلى وحدتين:

  • وحدة [التحكم] التي تتولى الاتصال بين العميل والخادم: معالجة الطلب، وإنشاء استجابات متنوعة
  • وحدة [منطق الأعمال]، التي تتلقى البيانات المراد معالجتها من وحدة [وحدة التحكم] وتزودها بالنتائج في المقابل. ثم تدير وحدة [منطق الأعمال] هذه الوصول إلى البيانات الدائمة بنفسها.