PDA

View Full Version : گفتگو: MVC در باطن یا در ظاهر و یا در هر دو ؟



abolfazl-z
دوشنبه 17 تیر 1392, 09:51 صبح
سلام دوستان :لبخندساده:

دوستان اگر ما MVC رو در ظاهر استفاده نکنیم مشکلی دارد ؟
منظور از ظاهر این هست که حتما پوشه هایش را هم بسازیم (شاید یک نفر بخواد مدل پوشه بندی اش به یک صورت دیگر باشه)
ولی منظور از باطن این هست که ما در برنامه نویسیمان از MVC استفاده می کنیم (که بعضی اوقات خودمون متوجه نمیشیم)

خوب کدوم حالت خوب هست ؟ (باطن یا ضاهر و یا هردو و یا اینکه یکم MVC و یکم از خودمون)

راستی دوستان ببینید من MVC رو اینطوری فهمیدم که :(ببینید درسته)

مثلا کاربر در صفحه لاگ این(lvorood.html) قرار دارد و کاربر اطلاعات اش رو به صفحه login.php ارسال می کند خوب به این صفحه میگن کنترلر که میاد بررسی می کند وداخل کد های این صفحه از Model هم استفاده می کنیم.و در نهایت همین صفحه اطلاعات رو به کاربر نشان می دهد که میشه view

آیا این MVC هست ؟

خوب MVC چند لایه چه می باشد ؟

MMSHFE
دوشنبه 17 تیر 1392, 11:06 صبح
دوست عزیز، اگه قرار باشه یک فایل، هم ورودیهای کاربر رو پردازش کنه و هم از دیتابیس اطلاعات رو استخراج کنه و هم نمایش بده که دیگه اسمش MVC نیست. میشه همون اسپاگتی کد با این تفاوت که فقط یکم مرتب شده. حالا اگه یه زمانی دیتابیس شما عوض شد و مثلاً خواستین از MongoDB استفاده کنید، باید تمام فایلها تغییر کنن ولی اگه Model جدا باشه، فقط همون بخش تغییر میکنه. یا اگه قالب نمایش عوض بشه، توی وضعیتی که شما گفتین، باید تمام فایلها اصلاح بشه ولی اگه View جداگانه باشه، فقط فایل/فایلهای مربوط به View اصلاح خواهد شد. بطور کلی MVC سه لایه است. حالا شما میتونید فایلها رو هرجور دوست دارین بگذارین ولی بهرحال باید دسته بندی داشته باشه. مثلاً یکی میگه سه پوشه models و views و controllers بسازین و فایلهای مربوط به هرکدوم رو بگذارین داخلش ولی یکی دیگه میگه برای هر Component یک پوشه بسازین و داخلش سه فایل model.php و view.php و controller.php رو بسازین. هر دو روش درسته و جواب میده و باید ببینید کدوم بیشتر و بهتر کار شما رو راه میندازه اما مهم اینه که دسته بندی جداگانه برای این سه لایه باید وجود داشته باشه و هر لایه توی فایل مخصوص خودش قرار بگیره.

Veteran
دوشنبه 17 تیر 1392, 11:18 صبح
به جز MVC
الگو های دیگه ایی هم داریم ؟
مثلا همین MVVM اگر اشتباه نکنم مربوط به .net باشه
توی PHP میشه استفاده کرد ؟

MMSHFE
دوشنبه 17 تیر 1392, 11:23 صبح
بطور کلی Design Patternها مستقل از زبان هستن و MVVM و MVP و GoF و... هم از این قاعده مستثنی نیستن. حالا توی یک زبان خاص ممکنه پیاده سازی یک الگوی طراحی ساده تر از بقیه باشه ولی معناش این نیست که بقیه نمیشه اون رو پیاده سازی کرد.

abolfazl-z
دوشنبه 17 تیر 1392, 12:11 عصر
دوست عزیز، اگه قرار باشه یک فایل، هم ورودیهای کاربر رو پردازش کنه و هم از دیتابیس اطلاعات رو استخراج کنه و هم نمایش بده که دیگه اسمش MVC نیست. میشه همون اسپاگتی کد با این تفاوت که فقط یکم مرتب شده. حالا اگه یه زمانی دیتابیس شما عوض شد و مثلاً خواستین از MongoDB استفاده کنید، باید تمام فایلها تغییر کنن ولی اگه Model جدا باشه، فقط همون بخش تغییر میکنه. یا اگه قالب نمایش عوض بشه، توی وضعیتی که شما گفتین، باید تمام فایلها اصلاح بشه ولی اگه View جداگانه باشه، فقط فایل/فایلهای مربوط به View اصلاح خواهد شد. بطور کلی MVC سه لایه است. حالا شما میتونید فایلها رو هرجور دوست دارین بگذارین ولی بهرحال باید دسته بندی داشته باشه. مثلاً یکی میگه سه پوشه models و views و controllers بسازین و فایلهای مربوط به هرکدوم رو بگذارین داخلش ولی یکی دیگه میگه برای هر Component یک پوشه بسازین و داخلش سه فایل model.php و view.php و controller.php رو بسازین. هر دو روش درسته و جواب میده و باید ببینید کدوم بیشتر و بهتر کار شما رو راه میندازه اما مهم اینه که دسته بندی جداگانه برای این سه لایه باید وجود داشته باشه و هر لایه توی فایل مخصوص خودش قرار بگیره.
دقیقا من هم دارم از همین الگو استفاده می کنم.

وردپرس هم از همین الگو استفاده می کند ؟

mvc چند لایه چیست ؟

MMSHFE
دوشنبه 17 تیر 1392, 12:43 عصر
گفتم که MVC سه لایه است.

abolfazl-z
دوشنبه 17 تیر 1392, 12:47 عصر
گفتم که MVC سه لایه است.
من فکرم این بود که اون سه تا باز قاطی میشن با هم میشن چند لایه:لبخند: