PDA

View Full Version : mvc و php



0xEHSAN
دوشنبه 21 دی 1394, 10:49 صبح
درود عزیزان من در مورد mvc هر چی تحقیق می کنم شکل هاش فرق میکنن و منم نمیتونم رابطه اصلی شونو به هم پیدار کنم برای مثال
class Model{ public $string; public function __construct() { $this->string = "MVC + PHP = Awesome, click here!"; }}class View{ private $model; private $controller; public function __construct($controller, $model) { $this->controller = $controller; $this->model = $model; } public function output() { return '' . $this->model->string . "
"; }}class Controller{ private $model; public function __construct($model) { $this->model = $model; } public function clicked() { $this->model->string = "Updated Data, thanks to MVC and PHP!"; }}$model = new Model();$controller = new Controller($model);$view = new View($controller, $model);if (isset($_GET['action']) && !empty($_GET['action'])) { $controller->{$_GET['action']}();}echo $view->output();کنترلر نباید رابطی بین مدل و ویوو باشه پس چرا مدل تو ویوو مستقیما تعریف شده؟ و یا تو این تصویر که با بالایی کاملا تفاوت داره؟http://www.tonymarston.net/php-mysql/model-view-controller-02.pngاین تصویر در مورد چه مدلی توضیح داده؟http://www.tonymarston.net/php-mysql/infrastructure-faq-05.pngمعماری سه لایه و MVC نیست آیا اینا رو میشه باهم استفاده کرد و برنامه پیچیده نمیشه؟سه لایه نباید باشه این که فقط دوتاست :)

leaping
سه شنبه 22 دی 1394, 08:49 صبح
توی معماری mvc خیلی وقتها پیش میاد که خود view هم با کنترلر ترکیب میشه و یه جایی هم کنترلر وارد view میشه و اجتناب نا پذیره
شکل دوومی که ترسیم کردین صحیح تر و منطقی تر هست
به نظرم یه نگاهی به فریمورک phalcon بندازید . توی ایجاد یه معماری مناسب خیلی کمکتون میکنه

hamedarian2009
سه شنبه 22 دی 1394, 12:38 عصر
MVC یه الگوی طراحیه و هرکسی با توجه به دیدی که از این مفهوم داشته اونو پیاده سازی کرده مثل یک زبانه که دارای لهجه های مختلفی هست قبلا فقط میگفتن باید کنترلر رابط بین مدل و ویو باشه اما الان میگن تمام لایه ها میتونن بهم متصل باشن و بهتره برای درک بهتر مطلب ساختار فریمورک های PHP رو بررسی کنید
در کل معماری سه لایه با MVC فرق داره و سه لایه یه مفهوم جامع تر هست شکل پایینی به نظر اومده دوتا شو باهم مقایسه کرده که از لحاظ مفهومی هرکدوم از لایه ها تو کدوم لایه اون یکی قرار میگیره

0xEHSAN
سه شنبه 22 دی 1394, 18:36 عصر
درود اون پاینی ترکیبی از دو معماری و طراحی هست معماری سه لایه و MVC متاسفانه من قوانینش رو نمیدونم واسه همین گیج شدم رابطه شون چی هست گفتن سی شارپ براساس معماری سه لایه هست الان متاسفانه مشکلی که من پیدا کردم اینه که برنامه ای که طراحی میکنم و میبینم مشکلی در طراحی داره و یا بهینه نیست باید از نو اونو طراحی کنم که این مورد برای پروژه های کوچک منو تو دردسر نندازه تو پروژه های بزرگ حتما وقتمو طلف میکنه و طراحی مو با اشکال مواجه میکنه

H:Shojaei
سه شنبه 22 دی 1394, 21:32 عصر
واسه پروژه های بزرگ معمولا فریم ورک ها پیشنهاد میشه که و اگر هم از اونها استفاده میکنید ارتباطات هم زیاد مد نظر نیست فکر کنم به جز مدل به ویو باقیه بتونن با هم در ارتباط باشن!
دلیل این هم که بهتره کنترلر بین مدل و ویو باشه اینه که هر داده ای که ذخیره میخواد بشه یا واکشی بشه بهتره فیلتر بشه که اون هم وظیفه کنترلر هست و بهتر هم هست که تو همون انجام بشه...

0xEHSAN
چهارشنبه 23 دی 1394, 06:45 صبح
درود الان فرقی نداره هر جور استفاده بشه مشکلی نداره؟کنترلر نقشش مثل روتر میمونه درسته؟مدل هم تکه کدهایی هستند که پرتابل هستن و میشه تو برنامه های دیگه استفاده کرد درسته؟ویو هم از مدلی که با کنترلر مقدار دهی شده استفاده میکنه برای نمایش اطلاعات ویو هست پوسته برنامه و مدل هم هسته و اصل MVC اینه که هر مدل کنترل و ویو بدون تغییری بشه در پروژه دیگه استفاده شون کرد درسته؟

nimaakbari
چهارشنبه 23 دی 1394, 11:21 صبح
138365


منبع : http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc


و اینم یکی دیگه
138366

منبع : http://www.sitepoint.com/the-mvc-pattern-and-php-1/


اینم یک مثال عملی در مورد Model View Controller MVC

منبع : http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

H:Shojaei
چهارشنبه 23 دی 1394, 11:52 صبح
ببینید ویو با کاربر سرو کار داره یعنی request , response رو مدیریت میکنه ...
مدل وظیفش برقراری ارتباط بین دیتابیس و کنترلر (پیشنهاد میشه) و یا ویو به (انتخاب شما و نیازی که پروژه داره یا راحتی کار) هست...
و کنترلر هم فیلتر کردن چک کردن و کلا کارای این چنینی واسه داده هایی که از کاربر توسط ویو بهش داده میشه یا داده هایی که از مدل بهش داده میشه واسه ارسال به ویو هست(در کل میشه گفت پردازش داده ها رو میکنه)...