PHP và MySQL Bài 33: Tổng quan về Laravel - So sánh với mô hình MVC tự viết
Hàng triệu trang web trên thế giới đang chạy trên Laravel. Nó là PHP Framework phổ biến nhất, mạnh mẽ nhất và có cộng đồng hỗ trợ lớn nhất hiện nay. Nhưng tại sao chúng ta không học nó ngay từ Bài 1 mà phải đi một vòng dài qua PHP thuần, PDO, OOP, và tự viết MVC?
Bởi vì Laravel bản chất giống như một chiếc siêu xe số tự động. Nếu bạn không hiểu nguyên lý hoạt động của hộp số, phanh, và động cơ (như PDO, Session, Autoloading), khi chiếc xe gặp sự cố trên cao tốc, bạn sẽ hoàn toàn bất lực.
1. Laravel là gì?
Laravel là một PHP Framework mã nguồn mở miễn phí, được thiết kế dựa trên mô hình kiến trúc MVC (Model - View - Controller).
Laravel cung cấp sẵn cho bạn một bộ khung chuẩn mực và hàng ngàn công cụ (thư viện) đã được viết sẵn để giải quyết những tác vụ nhàm chán nhất trong lập trình Backend: Định tuyến (Routing), Xác thực (Authentication), Phân quyền (Authorization), Tương tác Database, Gửi Email, và Hàng đợi (Queue).
2. Sự khác biệt: MVC tự viết (Mini CMS) vs. Laravel
Hãy cùng nhìn lại những gì chúng ta đã làm ở dự án Mini CMS và xem Laravel sẽ "tự động hóa" chúng một cách vi diệu như thế nào.
A. Định tuyến (Routing)
- Ở Mini CMS: Mọi request đều phải chạy qua file
index.php. Bạn phải viết hàng tá lệnhswitch...casehoặcif...elselồng nhau để kiểm tra biến$_GET['action']rồi mới gọi Controller. - Ở Laravel: Cung cấp sẵn một file
routes/web.phpvới cú pháp khai báo cực kỳ thanh lịch.// Chỉ cần 1 dòng này, Laravel tự hiểu URL /posts sẽ gọi đến hàm index của PostController Route::get('/posts', [PostController::class, 'index']);
B. Tương tác Cơ sở dữ liệu (PDO vs. Eloquent ORM)
- Ở Mini CMS: Bạn phải tự viết các câu lệnh SQL dài dòng, tự nối chuỗi, tự quản lý Prepared Statements (
prepare,execute) để chống SQL Injection.$sql = "SELECT * FROM posts WHERE status = 1 ORDER BY created_at DESC"; $stmt = $pdo->query($sql); $posts = $stmt->fetchAll(); - Ở Laravel: Cung cấp Eloquent ORM - một hệ thống ánh xạ dữ liệu tuyệt vời. Mỗi Bảng (Table) sẽ có một Model tương ứng. Bạn tương tác với Database giống hệt như đang dùng tiếng Anh (Và mặc định chống 100% SQL Injection).
// Lấy tất cả bài viết đang hoạt động, sắp xếp mới nhất $posts = Post::where('status', 1)->latest()->get();
C. Giao diện (HTML thuần vs. Blade Template Engine)
- Ở Mini CMS: Bạn phải liên tục mở thẻ
<?php foreach() ?>,<?php echo htmlspecialchars($title) ?>xen kẽ với HTML, làm cho mã nguồn rất rối mắt. - Ở Laravel: Sử dụng Blade Template. Cú pháp của Blade cực kỳ ngắn gọn và tự động áp dụng
htmlspecialcharsngầm để chống XSS.<!-- Thay vì viết <?php echo htmlspecialchars($post->title); ?> --> <!-- Trong Laravel Blade, bạn chỉ cần: --> <h1>{{ $post->title }}</h1>
D. Cấu trúc thư mục chuẩn mực
Thay vì tự tạo thư mục controllers, models, Laravel sinh ra một cấu trúc thư mục khổng lồ nhưng được quy chuẩn hóa trên toàn cầu. Dù bạn vào làm ở bất kỳ công ty nào sử dụng Laravel, bạn đều biết chính xác file cấu hình CSDL nằm ở đâu (.env), hay file Controller nằm ở đâu (app/Http/Controllers).
3. Khởi tạo dự án Laravel đầu tiên với Composer
Nhờ sự vĩ đại của Composer (mà chúng ta vừa học ở Bài 32), việc cài đặt toàn bộ hệ sinh thái khổng lồ của Laravel chỉ tốn đúng 1 dòng lệnh.
Mở Terminal của bạn lên (chuyển đến thư mục htdocs hoặc www) và gõ:
composer create-project laravel/laravel my-first-laravel
Composer sẽ tự động:
- Tải về phiên bản Laravel mới nhất.
- Tải về hàng chục thư viện phụ thuộc (
vendor). - Tạo sẵn các file cấu hình và sinh ra một khóa bảo mật (Application Key) tự động cho dự án.
Sau khi quá trình cài đặt hoàn tất (mất khoảng vài phút), bạn di chuyển vào thư mục dự án và khởi động máy chủ ảo được tích hợp sẵn của Laravel:
cd my-first-laravel
php artisan serve
Lúc này, Terminal sẽ báo dự án đang chạy tại http://localhost:8000. Mở trình duyệt lên, và bạn sẽ thấy trang chào mừng mặc định của Laravel.
Tổng kết Bài 33
Khung sườn tự viết của chúng ta tuy hoạt động tốt nhưng nó giống như một chiếc xe tự chế: khó nâng cấp, khó bảo trì khi dự án phình to. Laravel cung cấp một nền tảng chuyên nghiệp với các chuẩn mực công nghiệp giúp bạn làm việc nhanh gấp 10 lần.
Khi đã hiểu cách hệ thống chạy bên dưới, việc học Laravel bây giờ chỉ đơn thuần là học cách sử dụng các "công cụ" (tools) mà framework này cung cấp.
Ở bài tiếp theo, chúng ta sẽ mổ xẻ cấu trúc thư mục của Laravel và làm quen với công cụ quyền lực nhất của nó: Artisan CLI.
All Rights Reserved