Kiến trúc ứng dụng Slim
Slim Framework có cấu trúc đơn giản nhưng rất rõ ràng trong tổ chức thư mục và cách xử lý request. Trong bài học này, bạn sẽ nắm được cách các thư mục chính được tổ chức và hiểu quy trình xử lý request từ lúc nhận đến lúc trả về response.

1 Thư mục chính của ứng dụng Slim
Thư mục/File | Mô tả chi tiết |
---|---|
src/ |
Chứa mã nguồn chính của ứng dụng (class, business logic, service) |
routes/ |
Định nghĩa các route (URL) của ứng dụng |
templates/ |
Chứa file view/template (ví dụ: Twig, PHP-View) |
public/ |
Thư mục public, chứa index.php điểm vào của ứng dụng, tài nguyên tĩnh (CSS, JS, ảnh) |
Ngoài ra có thể có các file cấu hình như
.env
,settings.php
,dependencies.php
để quản lý cấu hình và container.
2 Cách Slim khởi tạo và xử lý request
-
Request được gửi đến
public/index.php
- Đây là entry point (điểm vào) của ứng dụng.
- Slim Framework được khởi tạo, cấu hình các service, middleware, route.
- Slim nhận request
- Slim tạo một đối tượng Request theo chuẩn PSR-7, đại diện cho yêu cầu HTTP.
- Routing
- Slim tìm route phù hợp với URL request.
- Nếu không tìm thấy route phù hợp, trả về 404.
- Middleware
- Request được truyền qua chuỗi middleware (nếu có), middleware có thể thay đổi request hoặc response.
- Controller/Handler
- Sau middleware, request được xử lý bởi handler (closure hoặc class).
- Kết quả trả về là đối tượng Response.
- Response
- Slim trả response về client theo chuẩn PSR-7.
Minh họa luồng xử lý request:
Client Request → public/index.php → Slim App
↓
Routing → Middleware → Handler (Controller)
↓
Response trả về Client
Ví dụ cụ thể
Giả sử bạn có cấu trúc thư mục Slim Skeleton như sau:
/project
├─ public/
│ └─ index.php
├─ src/
│ └─ Controller/
│ └─ HomeController.php
├─ routes/
│ └─ web.php
├─ templates/
│ └─ home.twig
├─ settings.php
├─ dependencies.php
└─ middleware.php
-
public/index.php
: Khởi tạo app, gọi các file cấu hình. -
routes/web.php
: Định nghĩa route trỏ đếnHomeController
. -
src/Controller/HomeController.php
: Xử lý logic và trả về view. -
templates/home.twig
: Template hiển thị dữ liệu.
Kết luận
Hiểu rõ kiến trúc ứng dụng giúp bạn tổ chức mã nguồn khoa học, dễ bảo trì và mở rộng. Slim Framework giữ cho cấu trúc gọn gàng nhưng vẫn linh hoạt để bạn tự do thiết kế theo ý muốn.
Bài tập thực hành
- Vẽ sơ đồ luồng xử lý request của Slim, minh họa từ khi client gửi request đến khi nhận response.
-
Giải thích vai trò của từng file và thư mục chính trong ứng dụng Slim Skeleton (ví dụ:
public/index.php
,routes/
,src/
,templates/
). - Tự xây dựng một cấu trúc thư mục mẫu cho một ứng dụng Slim đơn giản và mô tả chức năng từng phần.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com