Khi một dự án PHP phát triển đến mức có hàng chục, hàng trăm class thì việc include thủ công từng file class mỗi khi cần dùng là một cơn ác mộng. Giải pháp cho tình huống này chính là autoloading – tức là PHP sẽ tự động nạp file tương ứng với class mà bạn đang sử dụng.
Bài học này sẽ giúp bạn:
- Hiểu được cơ chế autoload trong PHP.
- Tổ chức cấu trúc thư mục hợp lý cho các class.
- Triển khai cơ chế autoload đơn giản (tự viết tay).
- Làm quen với chuẩn PSR-4 – chuẩn đặt tên và nạp class trong PHP hiện đại.
Vì sao cần autoload?
Hãy thử tưởng tượng: bạn có một thư mục classes/ chứa cả đống file như:
classes/
├── User.php
├── Mailer.php
├── Database.php
└── Auth.php
Trong mỗi file là một class tương ứng.
Nếu bạn viết code thế này:
$user = new User();
PHP sẽ không biết User là gì nếu bạn chưa require 'classes/User.php'; ở đầu file. Càng nhiều class, việc include sẽ càng cực.
→ Autoload giúp bạn không cần include thủ công nữa.
Tự viết autoloader
PHP cung cấp hàm spl_autoload_register() để bạn định nghĩa cách tự động nạp file tương ứng với class.
Ví dụ:
<?php
spl_autoload_register(function ($class) {
require_once "classes/$class.php";
});
Bây giờ, chỉ cần tạo class User trong classes/User.php như sau:
<?php
class User {
public function hello() {
echo "Xin chào từ class User!";
}
}
Và file sử dụng:
<?php
$user = new User();
$user->hello();
→ PHP sẽ tự động gọi classes/User.php khi thấy class User.
Quy tắc đặt tên class và folder
Để autoload hoạt động hiệu quả và không bị “đánh đố”, bạn nên tuân thủ:
- Tên class = tên file, phân biệt hoa thường.
- Mỗi class nên nằm trong một file riêng.
- Nên tổ chức thư mục theo từng nhóm chức năng (như Controller, Model, Helper…).
Làm quen chuẩn PSR-4
PSR-4 là chuẩn autoload hiện đại trong cộng đồng PHP, thường được dùng trong Laravel, Symfony, Composer…
Ví dụ:
namespace App\Controllers;
class HomeController {
public function index() {
echo "Trang chủ nè!";
}
}
Với autoload chuẩn PSR-4, nếu namespace là App\Controllers\HomeController, thì file cần nằm ở:
src/
└── Controllers/
└── HomeController.php
→ Việc autoload sẽ được cấu hình để ánh xạ App\ → src/.
Đây là phần bạn sẽ làm quen sâu hơn khi học Composer và Laravel. Ở giai đoạn này, chỉ cần hiểu namespace giúp tổ chức code rõ ràng, và autoload sẽ tìm đúng file theo namespace.
Bài tập gợi ý
- Tạo thư mục
classes/, viết 2 class:User.php,Mailer.php, mỗi class có 1 phương thức đơn giản. - Viết autoloader trong
index.phpnhư hướng dẫn. - Gọi thử các class trong trang chủ.
Tóm tắt
- Autoload giúp bạn không phải
requirethủ công từng file PHP. spl_autoload_register()là công cụ đơn giản để bạn tự viết autoloader.- Tuân thủ quy tắc đặt tên file và class giúp autoload hoạt động trơn tru.
- Chuẩn PSR-4 là hướng đi hiện đại, tổ chức mã nguồn chuyên nghiệp và quy củ hơn.
Khi bước vào dự án lớn hoặc framework hiện đại, việc hiểu autoload là một lợi thế cực kỳ quan trọng. Giống như bạn xây nhà và đã quen dùng bản vẽ, sơ đồ điện nước – bạn sẽ không còn lắp ráp ngẫu hứng nữa, mà biết tổ chức từng chi tiết từ sớm.

Thảo luận