PHP và MySQL Bài 34: Giải phẫu cấu trúc thư mục Laravel và "Ma thuật" của Artisan CLI
Sự vĩ đại của một Framework nằm ở chỗ: Nó tạo ra một chuẩn mực chung. Nếu bạn hiểu cấu trúc thư mục này, bạn có thể nhảy vào bất kỳ dự án Laravel nào trên thế giới và biết chính xác file xử lý đăng nhập đang nằm ở đâu, giao diện nằm ở đâu mà không cần ai hướng dẫn.
1. Những thư mục "Xương sống" cần nắm vững
Trong hàng tá thư mục của Laravel, ở giai đoạn nhập môn, bạn chỉ cần quan tâm đến 5 thư mục cốt lõi sau:
📁 app/ (Bộ não của hệ thống)
Đây là nơi chứa toàn bộ logic nghiệp vụ (PHP) của bạn.
app/Http/Controllers/: Nơi chứa các Controller (Tiếp nhận request, xử lý logic).app/Models/: Nơi chứa các Model (Tương tác với Cơ sở dữ liệu bằng Eloquent ORM).
📁 routes/ (Bản đồ điều hướng)
Nơi định nghĩa các đường dẫn (URL). Thay vì dùng file index.php với vô số lệnh switch...case như dự án tự làm, Laravel quản lý URL cực kỳ khoa học tại đây.
routes/web.php: Chứa các route trả về giao diện HTML (dành cho website).routes/api.php: Chứa các route trả về dữ liệu JSON (dành cho RESTful API, Mobile App).
📁 resources/ (Giao diện và Tài nguyên thô)
resources/views/: Nơi chứa toàn bộ mã HTML của bạn. Laravel sử dụng một công cụ tên là Blade (file có đuôi.blade.php) giúp viết HTML ngắn gọn và bảo mật hơn rất nhiều.- Thư mục này cũng chứa các file CSS, JavaScript gốc chưa qua biên dịch.
📁 database/ (Bản thiết kế kho dữ liệu)
Thay vì phải mở phpMyAdmin lên để tạo bảng, thêm cột bằng tay, Laravel cho phép bạn viết cấu trúc Database bằng code PHP.
database/migrations/: Chứa các bản thiết kế Bảng (Tables). Khi chạy lệnh, Laravel tự động dịch code này thành SQL và tạo bảng trong MySQL.database/seeders/: Nơi chứa code để tạo dữ liệu mẫu (fake data) tự động cho quá trình test.
📁 public/ (Cửa chính của ứng dụng)
Chứa file index.php duy nhất, cùng với CSS, JS, Hình ảnh đã biên dịch (assets).
⚠️ Bảo mật sinh tử: Khi đưa web lên Server thật (Deploy), bạn bắt buộc phải trỏ tên miền trực tiếp vào thư mục
public/này, không phải thư mục gốc của dự án. Điều này giúp giấu toàn bộ code PHP (như file.env, thư mụcapp/) khỏi sự nhòm ngó của Hacker.
2. File cấu hình .env - Trái tim môi trường
Nhớ file database.php chứa thông tin đăng nhập MySQL ở dự án cũ chứ? Laravel giấu tất cả những thông tin nhạy cảm đó vào một file ẩn nằm ở thư mục gốc có tên là .env (Environment).
Khi mở file .env ra, bạn sẽ thấy ngay cấu hình kết nối CSDL quen thuộc:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=he_thong_ban_ve # Tên Database của bạn
DB_USERNAME=root # User MySQL
DB_PASSWORD= # Mật khẩu MySQL
Chỉ cần sửa thông tin ở đây, toàn bộ Framework sẽ tự động nhận diện mà bạn không cần phải đụng vào bất kỳ dòng code PHP nào. File này tuyệt đối không được đẩy lên Git.
3. Artisan CLI - "Vị quản gia" phép thuật của Laravel
Trong PHP thuần, mỗi khi muốn tạo một Controller mới, bạn phải: Click chuột phải -> New File -> Gõ tên PostController.php -> Tự gõ thẻ <?php, tự khai báo class PostController... Rất mất thời gian và dễ gõ sai.
Laravel giải quyết triệt để sự nhàm chán đó bằng Artisan - một công cụ dòng lệnh (Command Line Interface) tích hợp sẵn. Bạn giao tiếp với Artisan qua Terminal (như Command Prompt hoặc Git Bash).
Mở Terminal tại thư mục gốc dự án, gõ php artisan list, bạn sẽ thấy hàng trăm lệnh hỗ trợ. Dưới đây là những lệnh "bỏ túi" dùng hàng ngày:
Lệnh khởi chạy máy chủ ảo (Thay thế XAMPP/Laragon tạm thời):
php artisan serve
Lệnh tạo File tự động (Make):
Artisan sẽ tự động sinh file, đặt đúng thư mục và viết sẵn bộ khung chuẩn mực cho bạn.
# Tạo một Controller tên là PostController
php artisan make:controller PostController
# Tạo một Model tên là Post
php artisan make:model Post
Lệnh kiểm tra hệ thống định tuyến:
In ra một bảng danh sách toàn bộ các URL (Routes) đang có trong hệ thống của bạn.
php artisan route:list
Lệnh thao tác với Database:
Thực thi các file thiết kế cơ sở dữ liệu (Migrations) để tạo bảng thực tế trong MySQL.
php artisan migrate
Tổng kết Bài 34
Cấu trúc thư mục của Laravel thoạt nhìn có vẻ đồ sộ, nhưng mỗi thành phần đều có nhiệm vụ rất rõ ràng. Cùng với sức mạnh sinh code tự động của Artisan, bạn có thể tiết kiệm được hàng giờ đồng hồ mỗi ngày thay vì phải thao tác thủ công.
All rights reserved