NTM Solutions

Bài đăng nổi bật

🐘 PHP Cơ Bản 8.2 — CẤP ĐỘ TRỨNG🥚

Tự học PHP từ ZERO đến làm web động #laptrinhphpcoban 📘 PHẦN 1 — NHẬP MÔN PHP Bài 00 — Giới thiệu khóa học & cài đặt môi trường PHP là ...

Thứ Sáu, 3 tháng 7, 2026

📘 Bài 33 — MVC là gì? 🏗️

Tổ chức code chuyên nghiệp trong PHP

Ở những bài trước, chúng ta đã biết cách:

  • ✅ Kết nối MySQL

  • ✅ CRUD dữ liệu

  • ✅ Chia Header / Footer bằng include

  • ✅ Hash mật khẩu

  • ✅ Filter dữ liệu

  • ✅ Làm quen với OOP

Website đã chạy được.

Nhưng nếu dự án có hàng trăm file thì sao?

Ví dụ:

  • Trang chủ

  • Danh sách sản phẩm

  • Tin tức

  • Đăng nhập

  • Quản lý người dùng

  • Dashboard

Nếu tất cả đều viết trong một file PHP thì sẽ rất khó bảo trì.

Đó là lý do MVC ra đời.



MVC là gì?

MVC là viết tắt của:

  • M → Model

  • V → View

  • C → Controller

MVC giúp chia chương trình thành nhiều phần riêng biệt.

Người dùng
     │
     ▼
Controller
     │
     ▼
Model
     │
     ▼
Database
     ▲
     │
View ◄────────────

Mỗi thành phần chỉ làm đúng nhiệm vụ của mình.


1. Model

Model chịu trách nhiệm làm việc với dữ liệu.

Ví dụ:

  • Kết nối MySQL

  • INSERT

  • UPDATE

  • DELETE

  • SELECT

Ví dụ:

class ProductModel
{
    public function getAll()
    {
        return mysqli_query(
            $GLOBALS["conn"],
            "SELECT * FROM products"
        );
    }
}

Model KHÔNG hiển thị HTML.

Model chỉ xử lý dữ liệu.


2. View

View là giao diện.

Ví dụ:

<h1>Danh sách sản phẩm</h1>

<?php foreach($products as $item): ?>

<p><?= $item["name"] ?></p>

<?php endforeach; ?>

View chỉ hiển thị dữ liệu.

Không nên viết SQL trong View.

❌ Sai:

mysqli_query(...);

3. Controller

Controller là "người điều phối".

Controller nhận request từ người dùng.

Ví dụ:

Người dùng mở:

products.php

Controller sẽ:

↓

gọi Model

↓

lấy dữ liệu

↓

đưa sang View

↓

hiển thị

Ví dụ:

$model = new ProductModel();

$products = $model->getAll();

include "views/products.php";

Luồng hoạt động của MVC

Browser

↓

Controller

↓

Model

↓

Database

↓

Model

↓

Controller

↓

View

↓

Browser

Đây là quy trình hoạt động của hầu hết framework hiện đại.


Cấu trúc thư mục MVC

Ví dụ:

project/

controllers/

models/

views/

config/

public/

index.php

Trong đó:

controllers/

Chứa Controller.

models/

Chứa Model.

views/

Chứa giao diện.

config/

File cấu hình.

public/

CSS

JS

Image


Ví dụ đơn giản

controllers/

HomeController.php

models/

Product.php

views/

home.php

Controller:

require "models/Product.php";

$model = new Product();

$data = $model->all();

include "views/home.php";

Model:

class Product
{
    public function all()
    {
        return mysqli_query(
            $GLOBALS["conn"],
            "SELECT * FROM products"
        );
    }
}

View:

<?php foreach($data as $row): ?>

<p><?= $row["name"] ?></p>

<?php endforeach; ?>

Mỗi phần đều có nhiệm vụ riêng.


Lợi ích của MVC

✅ Code gọn gàng

✅ Dễ mở rộng

✅ Dễ bảo trì

✅ Dễ làm việc nhóm

✅ Không trùng lặp code

✅ Tách giao diện và xử lý dữ liệu


So sánh Code thường và MVC

Không dùng MVC

PHP

↓

HTML

↓

SQL

↓

PHP

↓

HTML

↓

SQL

Mọi thứ lẫn vào nhau.

Sau vài nghìn dòng code sẽ rất khó sửa.


Dùng MVC

Controller

↓

Model

↓

Database

↓

Controller

↓

View

Mỗi file làm đúng một nhiệm vụ.


MVC có bắt buộc không?

Không.

Bạn vẫn có thể viết website bằng PHP thuần.

Nhưng khi dự án lớn lên, MVC gần như là lựa chọn tiêu chuẩn để quản lý mã nguồn hiệu quả.


MVC trong các Framework PHP

Hầu hết framework PHP nổi tiếng đều sử dụng hoặc dựa trên kiến trúc MVC:

  • Laravel

  • CodeIgniter

  • CakePHP

  • Yii

  • Phalcon

Nếu hiểu MVC, bạn sẽ học các framework này nhanh hơn rất nhiều.


Tổng kết

Sau bài này bạn đã biết:

  • MVC là gì

  • Vai trò của Model

  • Vai trò của View

  • Vai trò của Controller

  • Luồng hoạt động của MVC

  • Lợi ích của việc tách code theo MVC

🎉 Ở bài tiếp theo, chúng ta sẽ bước sang framework PHP phổ biến nhất hiện nay: Laravel, nơi mô hình MVC được áp dụng một cách đầy đủ và mạnh mẽ.

x1

quay về MỤC LỤC

Không có nhận xét nào:

Đăng nhận xét

Facebook Youtube RSS