أرجو من حضرتكم أن توضحوا لنا مفهوم MVC إن أمكن ذلك، قرأت العديد من المواضيع لكن لم تصلني الفكرة تماماً.
ما هو MVC المستخدم في البرمجة؟ قرأت الكثير لكن لم تصلني الفكرة
ببساطة الـ MVC هو اسلوب برمجة وليست تقنية بحد ذاتها , يسميها البعض نمط برمجة وهي بالانجليزية (design pattern).
تقوم على مبدأ فصل الاكواد البرمجية , ما اقصده بالفصل هو ان تكون الفئات التي تتعامل مع قاعدة البيانات مفصولة عن واجهة المستخدم ويكون هنالك وسيط بينهما ياخذ البيانات من الفئات الخاصة بالتعامل مع قواعد البيانات ويرسلها الى واجه المستخدم .
ليتوضح الامر اكثر يمكننا ان نقول بانه نظام يتكون من 3 طبقات (Models, Views, Controllers) و حيث ان :
Models : هي الفئات التي تتعامل مع قاعدة البيانات .
Views : هي واجهة المستخدم .
Controllers : هي الوسيط فيما بينهم .
اعلم ان الموضوع مازال محير وربما لم تفهم شيء , هذا طبيعي لانه ما سبق ذكره هو تعريف ال MVC
تعتبر ال Controllers هي محور هذا النمط حيث انها تلعب دور العقل في هذا الاسلوب البرمجي فهي من تقوم بطلب البيانات من ال Models وتقوم بمعالجتها وفلترتها الخ... ومن ثم تقوم بارسالها لل Views الذي يقوم بدوره بدمج هذه البيانات المعالجة داخل واجهة المستخدم .
وبالطبع اعكس العملية , فهو يستلم البيانات ان تم ادخالها من المستخدم ومعالجتها ومن ثم يعيد ارسالها الى ال Models الذي بدوره يقوم بادخالها الى جداول قاعدة البيانات.
اما ال Models فهي تعتبر قلب هذا النمط , حيث انه اي برمجية لا تتعامل مع قواعد بيانات تعتبر برمجيات ميته (ثابته)(عن الويب اتكلم), مهمه قذه الطبقة الرئيسية هي الاستعلام عن البيانات التي يطلبها ال Controller من قاعدة البيانات وارسالها له . وبالطبع اعكس العملية حيث يستقبل البيانات من الcontroller وكل ما عليه هو ادخالها الى قاعدة البيانات .
Views هو وجه هذا النمط حيث انه هو من يراه المستخدم (المستخدم لا يرى ال Controllers او ال Models) فقط يرى هذه الطبقة , وهي تعتبر التصميم ,
مهمتها استلام البيانات من ال Controller ودمجها مع التصميم وعرضها للمستخدم .
كيف تبدأ برمجية او البرمجة بهذا الاسلوب ؟
كل ما عليك هو انشاء 3 مجلدات رئيسية بالاسماء التالية (Models, Views, Controllers)
في كل ملف داخل ال Models سيكون فئة (Class) يتعامل مع جدول معين (يمكن ان يكون ملف واحد به اكثر من فئة ولكن فصلها يزيد الامر تنظيماً)
Views سيكون به التصميم فكل ملف سيكون لصفحة معينه او شاشة معينه في نظامك .
Controllers سيكون به الملفات التي تتعامل مع كلا الطبقتين كما تم التوضيح سابقاً .
سؤال : هل انت مضطر للعمل على هذا الاسلوب او هذا النمط ؟
جواب : بكل تأكيد لا يزجد شيء يجبرك على هذا وانت حر في اختيار النمط او الاسلوب البرمجي الذي يريحك (هنالك العديد منها ابحث عن design pattern في جوجل).
سؤال : ما هي مميزات هذا النمط ؟
جواب: 1 - سهولة تطوير النظام (هل هذا يعني انه لو اتبعت اسلوب اخر لا يمكنني تطوير نظامي ؟؟ بالطبع يمكنك ولكن اسلوب MVC يوفر وقت وجهد في هذه العملية ).
2 - تنظيم الكود البرمجي الخاص بك وفصلها مما يسهل من عملية التطوير والوصول الى ما تريد باسرع وقت .
هنالك العديد من المميزات يمكنك البحث عنها ,
سؤال (لمبرمجي PHP) : هل انا مضطر لاستخدام اطار عمل للعمل مع هذا الاسلوب ؟
جواب : بالطبع لا , يمكنك انشاء واحد خاص بك ان اردت ذلك .
اذا كانت اجابتي غير واضحة او لم تفهم بعد ما هو الـ MVC , شاهد هذه المراجع (ملاحظة بسيطة لم اقرأ اي من المواضيع بحثت عنها وادرجت لك الرابط)
1 - كتا وجدته على موقع كتب
2 - موضوع يتكلم عن ال MVC ويبدو ان الامثلة بلغة C# :
https://blog.codinghorror.c...
3- موضوع يتلكم عن الامر مع امثلة بلغة PHP :
http://www.tutorialspoint.c...
ارجو عذري على الاخطاء الاملائية كتبت التعليق بسرعه .
اتمنى لك التوفيق
التعليقات