آموزش ساخت معماری MVC (Model-View-Controller) در PHP به روش اصولی
معرفی معماری MVC و دلایل استفاده از آن
معماری MVC یا همان Model-View-Controller یک الگوی طراحی نرمافزار بسیار قدرتمند است که پروژه وب شما را به سه لایه مجزا تقسیم میکند. این تقسیمبندی به شما کمک میکند تا اصل جداسازی دغدغهها (Separation of Concerns) را رعایت کنید، کار تیمی را آسانتر سازید و از شلوغی و درهمتنیدگی کدهای بکاند و فرانتاند جلوگیری نمایید.
- Model (مدل): مسئول مستقیم تعامل با پایگاه داده و منطق دادهها است.
- View (ویو): لایه نمایش است که کدهای HTML/CSS خروجی را به کاربر نهایی نشان میدهد.
- Controller (کنترلر): واسط میان لایه مدل و ویو است. درخواست کاربر را دریافت کرده، پردازش میکند، داده را از مدل گرفته و به ویو تحویل میدهد.
ساختار پوشهبندی استاندارد یک پروژه PHP MVC
قبل از نوشتن کدها، باید ساختار استاندارد فایلها را مشخص کنیم. یک پوشهبندی تمیز بر اساس معماری استاندارد گوگل به شکل زیر خواهد بود:
myapp/
├── app/
│ ├── Controllers/
│ │ └── UserController.php
│ ├── Models/
│ │ └── UserModel.php
│ └── Views/
│ └── user.php
├── core/
│ ├── App.php
│ └── Controller.php
├── public/
│ └── index.php
└── .htaccess
مرحله اول: ساخت کلاس اصلی کنترلر (Core Controller)
ابتدا کلاس پایه کنترلر را ایجاد میکنیم تا تمام کنترلرهای دیگر از آن ارثبری کنند. این کلاس حاوی متد نمایش ویوها خواهد بود.
فایل core/Controller.php را باز کرده و کد زیر را بنویسید:
namespace Core;
class Controller {
// متدی برای لود کردن ویوها و ارسال داده به آنها
public function view($view, $data = []) {
// تبدیل کلیدهای آرایه به متغیرهای مجزا
extract($data);
$viewFile = '../app/Views/' . $view . '.php';
if (file_exists($viewFile)) {
require_once $viewFile;
} else {
die("صفحه مورد نظر یافت نشد!");
}
}
}
مرحله دوم: ساخت مدل (Model)
لایه Model مسئول واکشی اطلاعات است. در این مثال ما یک مدل فرضی بدون دیتابیس پیچیده برای سادگی کار میسازیم تا دادههای کاربر را بازگرداند.
فایل app/Models/UserModel.php را بسازید:
namespace App\Models;
class UserModel {
public function getUserData() {
return [
'id' => 101,
'name' => 'علی رضایی',
'role' => 'توسعه دهنده ارشد PHP',
'email' => 'ali.rezaei@example.com'
];
}
}
مرحله سوم: ساخت کنترلر اختصاصی (UserController)
حالا کنترلر کاربر را ایجاد میکنیم که از کنترلر اصلی هسته ارثبری میکند. این کنترلر مدل را فراخوانی کرده و دادهها را به ویو منتقل میکند.
فایل app/Controllers/UserController.php را بسازید:
namespace App\Controllers;
use Core\Controller;
use App\Models\UserModel;
class UserController extends Controller {
public function profile() {
// نمونهسازی از مدل
$userModel = new UserModel();
$userData = $userModel->getUserData();
// ارسال داده به ویوی مربوطه
$this->view('user', ['user' => $userData]);
}
}
مرحله چهارم: ایجاد فایل نمایش (View)
در نهایت، فایل ویو را میسازیم که دادههای خام آرایه ارسالی از کنترلر را به زیبایی رندر میکند.
فایل app/Views/user.php را باز کرده و کد زیر را اضافه کنید:
< div class="profile-card" >
< h2 >پروفایل کاربری< / h2 >
< p >< strong >نام:< / strong > < ?php echo htmlspecialchars($user['name']); ? >< / p >
< p >< strong >سمت:< / strong > < ?php echo htmlspecialchars($user['role']); ? >< / p >
< p >< strong >ایمیل:< / strong > < ?php echo htmlspecialchars($user['email']); ? >< / p >
< / div >
جمعبندی و مزایای معماری MVC
استفاده از الگوی معماری MVC سبب کاهش گرههای فنی پروژه، افزایش خوانایی، سادهسازی دیباگ و آمادهسازی ساختار پروژه برای استفاده از فریمورکهای بزرگی مانند Laravel میشود. کدنویسی به این شیوه، بهترین روش برای توسعه اپلیکیشنهای وب مدرن و اصولی تحت استانداردهای بینالمللی برنامهنویسی است.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید