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ẽ.




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