1. استخدام بنية MVC في تطبيقات الويب/PHP
يتوفر PDF الخاص بالمستند |HERE|.
أكواد المستند متاحة |HERE|.
يهدف نموذج MVC (نموذج-عرض-وحدة تحكم) إلى الفصل بوضوح بين طبقات العرض والمعالجة والوصول إلى البيانات. سيتم تصميم تطبيق الويب الذي يتوافق مع هذا النموذج على النحو التالي:
![]() |
غالبًا ما يُطلق على هذه البنية اسم بنية ثلاثية الأطراف أو ثلاثية المستويات:
- واجهة المستخدم هي العرض (V)
- المنطق التطبيقي هو وحدة التحكم (C)
- مصادر البيانات هي النموذج (M)
غالبًا ما تكون واجهة المستخدم عبارة عن متصفح ويب، ولكنها قد تكون أيضًا تطبيقًا مستقلًا يرسل طلبات عبر الشبكة إلى خدمة الويب ويقوم بتنسيق النتائج التي ترسلها إليه. تتكون منطق التطبيق من البرامج النصية التي تعالج طلبات المستخدم. غالبًا ما تكون مصدر البيانات قاعدة بيانات، ولكنها قد تكون أيضًا ملفات نصية بسيطة، أو دليل LDAP، أو خدمة ويب بعيدة،... من مصلحة المطور الحفاظ على استقلالية كبيرة بين هذه الكيانات الثلاثة بحيث إذا تغير أحدها، لا يتعين على الاثنين الآخرين التغيير أو يتغيران قليلاً.
تتناسب بنية MVC جيدًا مع تطبيقات الويب المكتوبة بلغات موجهة للكائنات. لغة PHP (4.x) ليست موجهة للكائنات. ومع ذلك، يمكن بذل جهد لتنظيم الكود وبنية التطبيق من أجل الاقتراب من نموذج MVC:
- سنضع منطق العمل الخاص بالتطبيق في وحدات منفصلة عن الوحدات المسؤولة عن التحكم في الحوار بين الطلب والاستجابة. تصبح بنية MVC كما يلي:
![]() |
في الكتلة [Logique Applicative]، يمكننا التمييز بين:
- البرنامج الرئيسي أو وحدة التحكم، وهو بوابة الدخول إلى التطبيق.
- الكتلة [Actions]، وهي مجموعة من البرامج النصية المسؤولة عن تنفيذ الإجراءات التي يطلبها المستخدم.
- الكتلة [Classes métier] التي تضم وحدات php اللازمة لمنطق التطبيق. وهي مستقلة عن العميل. على سبيل المثال، لا تحتاج الوظيفة التي تسمح بحساب ضريبة بناءً على معلومات معينة يتم تزويدها بها كمعلمات، إلى الاهتمام بالطريقة التي تم الحصول بها على هذه المعلومات.
- الكتلة [Classes d'accès aux données] التي تضم وحدات php التي تحصل على البيانات اللازمة لوحدة التحكم، وغالبًا ما تكون بيانات دائمة (BD، ملفات، ...)
- مولدات العروض المرسلة كرد للعميل.
في الحالات الأبسط، غالبًا ما تقتصر منطقية التطبيق على وحدتين:
- الوحدة النمطية [contrôle] التي تضمن الحوار بين العميل والخادم: معالجة الطلب، وتوليد الردود المختلفة
- الوحدة النمطية [métier] التي تتلقى من الوحدة النمطية [contrôle] البيانات المطلوب معالجتها وتزودها بالنتائج في المقابل. ثم تدير هذه الوحدة النمطية [métier] بنفسها الوصول إلى البيانات الدائمة.

