آشنایی با الگوی طراحی MVC و استفاده از الگوی MVC در زبان PHP

img
img
img
img
shape
shape
blog-details

معرفی الگوی (Model-View-Control (MVC

الگوی (Model-View-Control (MVC ، که در ابتدا در اواخر دهه 1970 شکل گرفت ، در واقع MVC یک الگوی توسعه نرم افزاری است که با استفاده از آن می توانید عملکرد، منطق، رابط و تمام بخش های برنامه خود را در هر زبان برنامه نویسی با استاندارد های شی گرایی پیش ببرید و بهترین عملکرد را از برنامه خود بگیرید.

از نظر تئوری ، یک سیستم MVC به خوبی توسعه یافته باید به یک توسعه دهنده  front-end  و توسعه دهنده back-end اجازه دهد تا روی سیستم کار کند بدون اینکه دخالتی در کد ها و یا به همریختگی در کد ها شکل بگیرد ، به اشتراک گذاری یا ویرایش پرونده هایی که طرفین روی آن کار می کنند بدون به هم ریختگی ادامه یابد .

حتی اگر MVC در ابتدا برای محاسبات شخصی طراحی شده بود ، به دلیل تأکید بر جداسازی و نگرانی ها  ، قابل استفاده مجدد بودن کدها ، توسط توسعه دهندگان وب بسیار مورد استفاده قرار گرفته است.

این الگوی ، توسعه سیستم ها را به صورت ماژولوار ترغیب می کند و توسعه دهندگان این امکان را می دهد که به سرعت کد های خود را بروزرسانی ، اضافه یا حتی حذف کنند .

در این مقاله ، من به اصول اساسی MVC خواهم پرداخت ، اجرای آن با تعریف الگوی و مثال سریع MVC در PHP است . این قطعاً برای هر کسی که قبلاً با MVC کدنویسی نکرده است یا افرادی که مایل به مهارت های  در توسعه برنامه خود بر مبنای معماری MVC هستند ،  آماده شده است.

آموزش MVC در زبان برنامه نویسی PHP

درک کردن الگوی MVC در برنامه نویسی

عنوان الگوی مجموعه ای از سه بخش اصلی آن تشکیل شده است: Model، View و Controller.  یک الگوی MVC کامل و صحیح مانند نمودار زیر است:

این تصویر نمودار جریان داده را نشان می دهد ، نحوه عبور آن بین هر مؤلفه ، و در نهایت نحوه ارتباط بین هر مؤلفه را نشان می دهد.

اگر درک درستی از تصویر بالا نداشتید به تصویر زیر نگاهی بیندازید :

آشنایی با مدل Model در الگوی MVC

مدل (Model) نامی است که وظیفه ذخیره  داده های مورد استفاده در طراحی کلی را دارد و اجازه می دهد تا داده هایی برای مشاهده ، یا جمع آوری و نوشتن داده ها به آنها دسترسی پیدا کند ، و پل ارتباطی بین مؤلفه View و Controller در الگوی کلی برنامه است.
یکی از جنبه های مهم مدل این است که از نظر فنی “blind” است – منظور من این است که مدل هیچ ارتباطی یا دانشی از آنچه اتفاق می افتد با داده ها هنگام انتقال به اجزای View یا Controller را ، ندارد. نه از قسمت های دیگر پاسخ می خواند و نه به دنبال پاسخی است. تنها هدف آن پردازش داده ها به حافظه دائمی به طور مثال پایگاه داده ، آن یا جستجوی و تهیه داده هایی است که به قسمت های دیگر منتقل می شود.

با این حال ، این مدل (Model) به سادگی نمی تواند به عنوان یک بانک اطلاعاتی یا دروازه ای به سیستم دیگری که فرایند داده را کنترل می کند خلاصه شود.  (Model) مدل باید به عنوان دروازه بان برای داده ها عمل کند ، و هیچ سؤالی یا شرطی را نمی پذیرد ، اما تمام درخواست هایی که به دست می آیدرا قبول می کند . اغلب کارا ترین قسمت سیستم MVC ، مؤلفه Model نیز اوج کل سیستم است زیرا بدون آن هیچ ارتباطی بین Controller و View وجود ندارد.

آشنایی با View در الگوی MVC

View جایی است که داده ها ، درخواست شده از مدل ، مشاهده می شوند و خروجی نهایی آن مشخص می شود. به طور سنتی در برنامه های وب که با استفاده از MVC ساخته شده اند ، View بخشی از سیستم است که در آن HTML تولید و نمایش می یابد.  View همچنین واکنشهای کاربر را در نظر گرفته و سپس به تعامل با Controller ادامه می دهد. به طور مثال دکمه تولید شده توسط یک View است که کاربر روی آن کلیک می کند و عملی را در Controller ایجاد می کند.
برخی تصورات غلط در مورد اجزای View وجود دارد ،  بسیاری از این دیدگاه ها را اشتباه می بینند که هیچ ارتباطی با مدل ندارند و تمام داده های نمایش داده شده توسط View از کنترل کننده منتقل می شوند :

“توجه به این نکته ضروری است که برای استفاده صحیح از معماری MVC ، نباید تعامل بین مدل ها و view ها اینگونه تعریف شود که : تمام منطق توسط کنترل کننده ها انجام می شود”

آشنایی با Controller ها در الگوی MVC

مؤلفه نهایی این مثلث Controller است. وظیفه اش این است که داده هایی را که کاربر وارد می کند یا ارسال می کند ، کنترل کند و مدل ها را به روز کند.  موثرترین عامل کنترل کننده ،کاربر است؛ بدون تعامل کاربر ، کنترل کننده هدفی ندارد. این تنها بخشی از الگویی است که در برنامه  کاربر باید با آن تعامل داشته باشد.
Controller را می توان به سادگی به عنوان یک جمع کننده اطلاعات خلاصه کرد ، که سپس آن را به مدل منتقل می شود تا برای ذخیره سازی سازماندهی شود ، و هیچ منطقی به غیر از آنچه برای جمع آوری ورودی مورد نیاز است ، ندارد. کنترلر نیز فقط به یک Model واحد و یک مدل واحد متصل شده است و آن را به یک سیستم جریان داده یک طرفه تبدیل کرده است و دارای دست زدن و نشانه هایی در هر نقطه از تبادل داده است.

مهم است که به یاد داشته باشید که کنترل کننده وظایفی را به شما می دهد که هنگام تعامل کاربر با View ، اولین عملکرد را انجام دهد و اینکه هر عملکرد Controller یک ماشه است که با تعامل کاربر با View تنظیم شده است. رایج ترین اشتباهی که توسط توسعه دهندگان انجام شده اشتباه گرفتن Controller برای یک دروازه و در نهایت اختصاص دادن کارکردها و مسئولیت هایی است که View باید داشته باشد (این به طور معمول نتیجه همان توسعه دهنده است که جزء View را فقط به عنوان یک الگو اشتباه می کند). علاوه بر این ، یک اشتباه معمولی است که عملکردهای Controller را به عهده بگیرید که تنها مسئولیت پردازش داده ها از مدل به View را به آن اختصاص می دهد ، در حالی که در الگوی MVC این رابطه باید بین مدل و Model نگه داشته شود.

الگوی MVC در زبان برنامه نویسی PHP + مثال

نوشتن یک برنامه وب در PHP که معماری آن بر اساس الگوی MVC است به راحتی امکان پذیر است . بیایید با یک مثال ساده شروع کنیم:
 

<?php
class Model
{
    public $string;
    public function __construct(){
        $this->string = "MVC + PHP = Awesome!";
    }
}


در کد های بالا ما متغیری با نام 
ایجاد کردیم $string 
$this->string  و سپس با نشانگر 
آن را مقدار دهی کردیم 

 

<?php
class View
{
    private $model;
    private $controller;
    public function __construct($controller,$model) {
        $this->controller = $controller;
        $this->model = $model;
    }
  
    public function output(){
        return "<p>" . $this->model->string . "</p>";
    }
}

در توابع بالا باید دو مقدار 
$controller
$model
ابتدا مقدار دهی شوند چون در تابع 
__construct
قرار گرفته اند - در غیراینصور کلاس قایل استفاد نیست ! برای مثال 

---------------- مثال ----------------
$View = new View ( 1 , 1);

----------------  اتمام مثال ----------------
<?php
class Controller
{
    private $model;
    public function __construct($model) {
        $this->model = $model;
    }
}

ما پروژه خود را با چند کلاس بسیار اساسی برای هر بخش از این الگو شروع کرده ایم. حال باید روابط بین آنها را تنظیم کنیم:

<?php
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
echo $view->output();

همانطور که در مثال بالا مشاهده می کنید ، ما هیچ عملکردی خاص برای کنترل نداریم زیرا هیچگونه تعامل کاربر با برنامه ما تعریف نشده است. این نمایش همه عملکردها را در اختیار دارد ، به عنوان مثال صرفاً برای اهداف نمایش است.

 

بیایید مثال را مثال بزنیم تا نشان دهیم چگونه می توانیم عملکرد را به کنترلر اضافه کنیم ، در نتیجه تعامل به برنامه اضافه می شود:

<?php
class Model
{
    public $string;
    public function __construct(){
        $this->string = “MVC + PHP = Awesome, click here!”;
    }
}
<?php
class View
{
    private $model;
    private $controller;
    public function __construct($controller,$model) {
        $this->controller = $controller;
        $this->model = $model;
    }
    public function output() {
        return '<p><a href="mvc.php?action=clicked"' . $this->model->string . "</a></p>";
    }
<?php
class Controller
{
    private $model;
    public function __construct($model){
        $this->model = $model;
    }
    public function clicked() {
        $this->model->string = “Updated Data, thanks to MVC and PHP!”
    }
}

ما برنامه را با برخی عملکردهای اساسی بهبود داده ایم. تنظیم رابطه بین مؤلفه های ما اینگونه است:

<?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();

کد را اجرا کنید و وقتی روی پیوند کلیک کنید ، می توانید رشته را تغییر داده داده خود را مشاهده کنید.

 

اطلاعات این دوره آموزش
آشنایی با الگوی طراحی MVC و استفاده از الگوی MVC در زبان PHP

قیمت : 0 تومان

زمان : 00:00:00

بالا