آموزش رایگان PHP

آموزش ساخت معماری MVC (Model-View-Controller) در PHP به روش اصولی

1405/08/02 15:31 محراب حسن زاده
آموزش ساخت معماری 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 می‌شود. کدنویسی به این شیوه، بهترین روش برای توسعه اپلیکیشن‌های وب مدرن و اصولی تحت استانداردهای بین‌المللی برنامه‌نویسی است.


پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش تگ‌های زمان و مکان در HTML: استفاده از time و location در صفحات وب
1402/05/29 21:13

آموزش تگ‌های زمان و مکان در HTML: استفاده از time و location در صفحات وب

مطالعه بیشتر
معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن
1402/06/28 00:59

معرفی React.js و بررسی مزایای آن برای توسعه وب و اپلیکیشن

مطالعه بیشتر
نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان
1402/06/28 01:09

نصب Node.js و Create React App: شروع پروژه‌های React.js به‌صورت آسان

مطالعه بیشتر
استفاده از visibility و opacity در CSS برای مخفی‌سازی عناصر: راهنمای کامل و کاربردی
1403/08/11 20:31

استفاده از visibility و opacity در CSS برای مخفی‌سازی عناصر: راهنمای کامل و کاربردی

مطالعه بیشتر
تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور
1404/09/21 23:58

تفاوت Data و Computed Properties در Vue.js | آموزش کاربردی و مثال‌محور

مطالعه بیشتر
توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6
1403/06/02 20:36

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

مطالعه بیشتر
آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)
1405/03/24 01:01

آموزش جامع انواع داده‌ها در PHP (بخش اول: String, Integer, Float, Boolean)

مطالعه بیشتر
آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن
1405/05/14 22:13

آموزش گام به گام ساخت سیستم لاگین و لاگ‌اوت در PHP به صورت ایمن

مطالعه بیشتر
آموزش ایجاد یک پروژه ساده React: شروع کار و ساختاردهی کامپوننت‌ها
1402/06/28 23:04

آموزش ایجاد یک پروژه ساده React: شروع کار و ساختاردهی کامپوننت‌ها

مطالعه بیشتر
آموزش آپدیت اطلاعات در دیتابیس به روش امن و استاندارد (Update Query)
1405/05/13 21:12

آموزش آپدیت اطلاعات در دیتابیس به روش امن و استاندارد (Update Query)

مطالعه بیشتر
راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو
1402/05/21 23:26

راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو

مطالعه بیشتر
تفاوت PHP با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان
1405/03/21 01:06

تفاوت PHP با HTML، CSS و JavaScript؛ راهنمای جامع و ساده برای مبتدیان

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد