آموزش کامل معماری MVC در PHP به زبان ساده و گام به گام
معماری MVC چیست؟
معماری MVC یا Model-View-Controller یک الگوی طراحی نرمافزار (Design Pattern) است که برای جداسازی منطق برنامه (Logic) از رابط کاربری (UI) استفاده میشود. این الگو به شما کمک میکند پروژههای بزرگ را به صورت ماژولار و بسیار تمیز پیادهسازی کنید تا چندین توسعهدهنده بتوانند به طور همزمان بدون تداخل کدهای یکدیگر روی بخشهای مختلف کار کنند.
اجزای اصلی معماری MVC
این معماری از سه بخش اصلی تشکیل شده است که هر کدام وظیفه مشخصی را بر عهده دارند:
- Model (مدل): مسئول مستقیم مدیریت دادهها، ارتباط با پایگاه داده و منطق محاسباتی برنامه است. مدل هیچ اطلاعی از نحوه نمایش دادهها ندارد.
- View (نمایش): رابط کاربری برنامه است. تمام کدهای HTML، CSS و المانهای بصری که کاربر مشاهده میکند در این لایه قرار دارند.
- Controller (کنترلر): به عنوان واسط کاربری عمل میکند. درخواست کاربر را دریافت کرده، اطلاعات لازم را از مدل فراخوانی میکند و سپس پاسخ مناسب را جهت نمایش به سمت ویو ارسال میکند.
ساختار پوشهبندی استاندارد در پروژه MVC PHP
داشتن یک پوشهبندی استاندارد، گام نخست در پیادهسازی صحیح معماری MVC است. ساختار زیر یک ساختار ساده و استاندارد برای پروژههای PHP بر پایه MVC است:
myapp/
├── app/
│ ├── controllers/
│ │ └── UserController.php
│ ├── models/
│ │ └── User.php
│ └── views/
│ └── user_view.php
├── public/
│ └── index.php
└── .htaccess
پیادهسازی گام به گام اجزا در PHP
بیایید یک مینیپروژه کوچک برای نمایش اطلاعات کاربر با استفاده از الگوی MVC پیادهسازی کنیم.
۱. پیادهسازی مدل (Model)
مدل کلاسی است که مستقیماً با دادهها سر و کار دارد. فایل User.php را در مسیر app/models/ ایجاد میکنیم:
class User {
public function getUserData() {
// در واقعیت این دادهها از پایگاه داده لود میشوند
return [
'name' =--> 'پارسا راد',
'role' => 'توسعهدهنده ارشد PHP',
'email' => 'parsa@example.com'
];
}
}
۲. پیادهسازی کنترلر (Controller)
کنترلر درخواست را گرفته، دادهها را از مدل دریافت و به ویو پاس میدهد. فایل UserController.php را در مسیر app/controllers/ ایجاد میکنیم:
require_once '../app/models/User.php';
class UserController {
public function showProfile() {
// نمونهسازی از کلاس مدل
$userModel = new User();
$userData = $userModel--->getUserData();
// فرستادن اطلاعات دریافت شده به فایل ویو جهت رندر نهایی
require_once '../app/views/user_view.php';
}
}
۳. پیادهسازی ویو (View)
ویو اطلاعات دریافت شده را درون کدهای HTML نمایش میدهد. فایل user_view.php را در مسیر app/views/ ایجاد میکنیم:
< !DOCTYPE html >
< html lang="fa" dir="rtl" >
< head >
< meta charset="UTF-8" >
< title >پروفایل کاربر< / title >
< / head >
< body >
< div class="profile-card" >
< h2 >پروفایل کاربری< / h2 >
< p >< strong >نام:< / strong > < / p >
< p >< strong >سمت:< / strong > < / p >
< p >< strong >ایمیل:< / strong > < / p >
< / div >
< / body >
< / html >
۴. نقطه ورود برنامه (Front Controller)
در پروژههای مدرن MVC، تمام درخواستها ابتدا به یک فایل به نام index.php فرستاده میشوند. فایل public/index.php نقش هماهنگکننده یا روتینگ را ایفا میکند:
// لود کردن کنترلر به صورت دستی یا از طریق Autoloader
require_once '../app/controllers/UserController.php';
// شبیهسازی یک روتینگ ساده
$action = isset($_GET['action']) ? $_GET['action'] : 'profile';
if ($action === 'profile') {
$controller = new UserController();
$controller--->showProfile();
} else {
echo "404 - صفحه پیدا نشد!";
}
چرا باید از معماری MVC استفاده کنیم؟
استفاده از معماری MVC مزایای متعددی به همراه دارد:
- جداسازی وظایف (Separation of Concerns): کدهای دیتابیس، منطق برنامه و فرانتاند کاملاً مستقل از هم هستند.
- قابلیت نگهداری بالا (Maintainability): تغییر در ظاهر سایت نیاز به دستکاری کدهای پایگاهداده ندارد.
- تستپذیری راحتتر (Unit Testing): از آنجایی که کلاسها مستقل هستند، نوشتن سناریوهای تست به شدت آسانتر میشود.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید