Kiến trúc ứng dụng Slim

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 5 tháng 6, 2025

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

  1. 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.
  1. 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.
  1. 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.
  1. Middleware
  • Request được truyền qua chuỗi middleware (nếu có), middleware có thể thay đổi request hoặc response.
  1. 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.
  1. 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ỏ đến HomeController.
  • 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

  1. Vẽ sơ đồ luồng xử lý request của Slim, minh họa từ khi client gửi request đến khi nhận response.
  2. 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/).
  3. 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.
Website Logo

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.

Bình luận

Website Logo

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

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ