الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]سؤال عن MVC - Template Engines

بدأه Virus-X في 4 يوليو 2012 · 4 رد · 1,333 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أعلم ان محركات القوالب كـ Smarty تستخدم في حل مشكلة Spaghetti Code بفصل Logic Code عن Presentation Code

سؤالي هو ما الفرق بينها وبين MVC وإذا كان هناك فرق فما هي أهمية MVC

وهل المنتجات الكبرى تستخدم Frameworks كـ Zend, CakePHP وغيرها ؟

شكراً مقدماً

تم تعديل هذه المشاركة بواسطة Virus-X في 4 يوليو 2012 في 03:18

الحمد لله ...

#2

الـ MVC هو عبارة عن Design Pattern

اي انه اسلوب عمل او ممكن تقول فكرة لبناء البرنامج ليس كالـ Framework او محرك القوالب هو فقط مجرد اسلوب لا اكواد ولا اي حاجة ممكن تستخدمها في البرنامج

على سبيل المثال لو كنت تبي بيت فجاء واحد وقال لك ضع المطبخ على الجهه اليمنى وضع مقاسه مثلا 10 * 10 متر وغرفة النوم ضعها على الجانب الايسر وضع جدار فاصل مابين

غرفه الضيوف وغرفه النوم وهكذا , طبعا ً انت بتسأله ليش !! , ممكن يقولك عشان التهوئه او عشان البيت يدوم لفترة زمنية اطول او او او .. سوف يعدد لك عدة مزايا طبعا ً اذا كان هذا الشخص هو مهندس معماري وفاهم كويس هذا الامر

لاحظ انه هو لم يقدم لك شي مادي محسوس فقط قدم لك فكرة واعطاك طريقة كيف تبني بيتك بحيث يكون فيه بعض المزايا , والقرار الاخير راجع لك ممكن انت تأتي بفكرة وطريقة افضل من طريقته وممكن لا.

الـ MVC في البرمجة نفس الشي , انت الان تريد برمجة برنامج ممكن انت تقسم برنامجك مثلا مجلد للدوال ومجلد للوحة التحكم وملف لمش عارف ايش يعني تتبع اسلوب معين في بناء البرنامج

الـ MVC هو اسلوب لبناء البرنامج من مميزاته ان برنامجك سوف يكون سهل للتطوير والتحديث مستقبلا ً وسوف يكون اكثر مرونه في تصحيح الاخطاء او اضافة مميزات وغيرها من الميزات

هذا الاسلوب يشترط عليك ثلاثة اشياء , انك تقسم برنامجك الى ثلاث جزئيات , الجزء الاول الي هي Module والجزء الثاني الي هو View والجزء الثالث Controller

الـ Module يقصد به انك تعمل مجموعة من الكلاسات Classes او ممكن تعمل دوال function لو ماكنت فاهم الـ OOP المهم تعمل هذه الدوال والكلاسات وتحطها في مجلد او ممكن تحطها في ملف براحتك

طبعا ً كل كلاس او دالة لها وظيفة معينة على سبيال المثال تعمل دالة مثلا ً للاضافة الى جدول في قاعدة البيانات ودالة اخرى مثلا لجلب التعليقات حول موضوع معين وهكذا تعمل مجموعة دوال وكلاسات تؤدي غرض معين

وممكن ايضا ً انك تستخدم موديول جاهز من الانترنت .

طبعا ً بالنسبة للموديول هذا مجال الـ Web Developer يعني لغة برمجة فقط وممكن تستخدم شوية html للضرورة فقط .

اما الـ View يقصد به واجه الموقع وشكله كيف راح يكون هذا هو مجال الـ Web Design , طبعا ً انت تصمم وتسوي القالب فقط بعدين كل ما عليك الا ان تستدعي الدوال من الموديول وتضعها في القالب

على سبيل المثال لو عملت بلوك في القالب فيه عدد الزوار , طبعا ً يفترض ان يكون عندك موديول لهذا الغرض فقط في القالب تستدعي هذه الدالة , فقط مجرد استدعاء بدون ان تضع اي كود .

وهذا طبعا ً تلاحظة في اغلب البرامج المشهورة مثل VB او Joomla لما تصمم قالب , بعد التصميم كل الي تعمله انك تستبدل بعض الاماكن ببعض الاكواد الخاص بهذا البرنامج , وهذه الي يسمونها ( التكويد )

اما الـ Controller هذا الي يتعامل معاه الزائر , هذا وظيفته انه يستدعي الموديول ويستدعي القالب ثم يعرضهم للزائر , يعني الزائر لا يتصل مباشرة بالموديول ولا يتصل بملف القالب فقط يتصل بالـ Controller وهو في الغالب يكون ملف Index

هذا الملف سوف تلاحظ انه اغلبه عبارة عن ادوال استدعاء للموديول والقالب.

هذا هو الـ MVC ببساطة لاحظ هو لا يعطيك كود ولا يعطيك اي حاجه فقط يقدم لك اسلوب لبناء برنامج بعكس الـ Framework فهو عبارة عن مجموعة من الدوال والكلاسات اما محرك القوالب هو في الاساس برنامج يحول رموز معينه الى كود برمجي .

المنتجات الكبرى بلا شك انها تستخدم اطر عمل Framework بعض المنتجات لا تستخدم اطر عمل جاهزه بل هي تبني اطار العمل الخاص بها , اطار العمل ماهو الا عبارة عن مجموعة دوال وكلاسات تسهل عليك عملية التطوير

ان شاء الله تكون وضحت الفكرة ^_^

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#3
M.B.O كتب:

الـ MVC هو عبارة عن Design Pattern

اي انه اسلوب عمل او ممكن تقول فكرة لبناء البرنامج ليس كالـ Framework او محرك القوالب هو فقط مجرد اسلوب لا اكواد ولا اي حاجة ممكن تستخدمها في البرنامج

على سبيل المثال لو كنت تبي بيت فجاء واحد وقال لك ضع المطبخ على الجهه اليمنى وضع مقاسه مثلا 10 * 10 متر وغرفة النوم ضعها على الجانب الايسر وضع جدار فاصل مابين

غرفه الضيوف وغرفه النوم وهكذا , طبعا ً انت بتسأله ليش !! , ممكن يقولك عشان التهوئه او عشان البيت يدوم لفترة زمنية اطول او او او .. سوف يعدد لك عدة مزايا طبعا ً اذا كان هذا الشخص هو مهندس معماري وفاهم كويس هذا الامر

لاحظ انه هو لم يقدم لك شي مادي محسوس فقط قدم لك فكرة واعطاك طريقة كيف تبني بيتك بحيث يكون فيه بعض المزايا , والقرار الاخير راجع لك ممكن انت تأتي بفكرة وطريقة افضل من طريقته وممكن لا.

الـ MVC في البرمجة نفس الشي , انت الان تريد برمجة برنامج ممكن انت تقسم برنامجك مثلا مجلد للدوال ومجلد للوحة التحكم وملف لمش عارف ايش يعني تتبع اسلوب معين في بناء البرنامج

الـ MVC هو اسلوب لبناء البرنامج من مميزاته ان برنامجك سوف يكون سهل للتطوير والتحديث مستقبلا ً وسوف يكون اكثر مرونه في تصحيح الاخطاء او اضافة مميزات وغيرها من الميزات

هذا الاسلوب يشترط عليك ثلاثة اشياء , انك تقسم برنامجك الى ثلاث جزئيات , الجزء الاول الي هي Module والجزء الثاني الي هو View والجزء الثالث Controller

الـ Module يقصد به انك تعمل مجموعة من الكلاسات Classes او ممكن تعمل دوال function لو ماكنت فاهم الـ OOP المهم تعمل هذه الدوال والكلاسات وتحطها في مجلد او ممكن تحطها في ملف براحتك

طبعا ً كل كلاس او دالة لها وظيفة معينة على سبيال المثال تعمل دالة مثلا ً للاضافة الى جدول في قاعدة البيانات ودالة اخرى مثلا لجلب التعليقات حول موضوع معين وهكذا تعمل مجموعة دوال وكلاسات تؤدي غرض معين

وممكن ايضا ً انك تستخدم موديول جاهز من الانترنت .

طبعا ً بالنسبة للموديول هذا مجال الـ Web Developer يعني لغة برمجة فقط وممكن تستخدم شوية html للضرورة فقط .

اما الـ View يقصد به واجه الموقع وشكله كيف راح يكون هذا هو مجال الـ Web Design , طبعا ً انت تصمم وتسوي القالب فقط بعدين كل ما عليك الا ان تستدعي الدوال من الموديول وتضعها في القالب

على سبيل المثال لو عملت بلوك في القالب فيه عدد الزوار , طبعا ً يفترض ان يكون عندك موديول لهذا الغرض فقط في القالب تستدعي هذه الدالة , فقط مجرد استدعاء بدون ان تضع اي كود .

وهذا طبعا ً تلاحظة في اغلب البرامج المشهورة مثل VB او Joomla لما تصمم قالب , بعد التصميم كل الي تعمله انك تستبدل بعض الاماكن ببعض الاكواد الخاص بهذا البرنامج , وهذه الي يسمونها ( التكويد )

اما الـ Controller هذا الي يتعامل معاه الزائر , هذا وظيفته انه يستدعي الموديول ويستدعي القالب ثم يعرضهم للزائر , يعني الزائر لا يتصل مباشرة بالموديول ولا يتصل بملف القالب فقط يتصل بالـ Controller وهو في الغالب يكون ملف Index

هذا الملف سوف تلاحظ انه اغلبه عبارة عن ادوال استدعاء للموديول والقالب.

هذا هو الـ MVC ببساطة لاحظ هو لا يعطيك كود ولا يعطيك اي حاجه فقط يقدم لك اسلوب لبناء برنامج بعكس الـ Framework فهو عبارة عن مجموعة من الدوال والكلاسات اما محرك القوالب هو في الاساس برنامج يحول رموز معينه الى كود برمجي .

المنتجات الكبرى بلا شك انها تستخدم اطر عمل Framework بعض المنتجات لا تستخدم اطر عمل جاهزه بل هي تبني اطار العمل الخاص بها , اطار العمل ماهو الا عبارة عن مجموعة دوال وكلاسات تسهل عليك عملية التطوير

ان شاء الله تكون وضحت الفكرة ^_^

جزاك الله كل خير

من إجابتك أستنتج أن المنتجات التي تستخدم MVC ممكن أيضاً أنها تستخدم محرك قوالب كـ Smarty أو آخر خاص من برمجتها

إعذرني ولكن لدي سؤال آخر ، من الكلمات التي ما أقرأها كثيراً مع MVC هي Singleton و Registry فهل لديك فكرة ما هما ؟

شكراً جزيلاً

الحمد لله ...

#4

الـ Singleton و Registry هما ايضا Design pattern

راجع هذه الروابط قد تفيدك

/index.php?showtopic=54427

http://stackoverflow.com/questions/2101943/registry-or-singleton-pattern-in-php

http://www.phppatterns.com/docs/design/the_registry

M.B.O

Mohamed Bin Othman

إبن المكلا

يابني البشر ماذا فعلتم بالبشر !!

إسـألـنـي

#5
M.B.O كتب:

الـ Singleton و Registry هما ايضا Design pattern

راجع هذه الروابط قد تفيدك

/index.php?showtopic=54427

http://stackoverflow.com/questions/2101943/registry-or-singleton-pattern-in-php

http://www.phppatterns.com/docs/design/the_registry

جزاك الله خيراً أخي

وجاري الإطلاع

الحمد لله ...

مواضيع مشابهة