Trong ứng dụng web, việc bố trí cấu trúc thư mục web phần nào ảnh hưởng tới quá trình viết mã lệnh ứng dụng. Để cho cấu trúc thư mục web được rõ ràng, tường minh và quan trọng đó là khả năng mở rộng ứng dụng mà không làm thay đổi cấu trúc ban đầu thì các bạn cần phải xây dựng cho ứng dụng của mình một cấu trúc tốt trước khi bắt đầu viết mã lệnh đầu tiên.
Mỗi phong cách viết khác nhau có thể các bạn sẽ có những cấu trúc khác nhau. Vì vậy, tôi cũng không yêu cầu các bạn tuân theo cấu trúc của tôi đưa ra nhưng để tiện lợi trong quá trình theo dõi loạt bài viết này thì các bạn nên bố trí cấu trúc thư mục web như của tôi cho thuận tiện.
Cấu trúc thư mục web mà tôi đề nghị như sau:
admin
configs
extends
libraries
models
views
-----admin
-----front
templates
-----admin
-----front
userfiles
Trong đó:
- admin: Chứa các tập tin xử lý của trang quản trị.
- configs: Chứa các tập tin cấu hình website.
- extends: Chứa các thành phần mở rộng (Bộ soạn thảo...).
- libraries: Chứa thư viện cần thiết để lập trình.
- models: Chứa các tập tin xử lý tương tác với DB (Lấy dữ liệu, thêm mới, chỉnh sửa, xóa...).
- views: Chứa các tập tin giao diện HTML của website. Tôi chia thành hai nhóm là admin (Trang quản trị) và front (Trang người dùng).
- templates: Chứa các tập tin CSS, JS, hình ảnh... Tôi cũng chia làm hai nhóm là admin và front.
- userfiles: Chứa các tập tin do người dùng tải lên.
Mỗi trang của ứng dụng web tôi đã chia thành ba phần như sau:
- Trang xử lý: Chứa mã lệnh PHP xử lý các yêu cầu từ người dùng và trả kết quả lại cho người dùng.
- Model: Thành phần tương tác trực tiếp với DB. Mỗi bảng dữ liệu trong DB tôi sẽ có một tập tin tương ứng trùng tên với bảng dữ liệu đó và đặt trong thư mục models để dễ kiểm soát.
- View: Thành phần giao diện HTML của website. Thành phần này sẽ nhận kết quả trả lại từ trang xử lý để trình bày dữ liệu đó theo giao diện HTML đã thiết kế.
Với cấu trúc như trên, tôi đã tách tối đa phần mã lệnh PHP với mã lệnh HTML để giúp mã lệnh web trở nên trong sáng hơn, dễ bảo trì, nâng cấp hơn. Trên đây là cấu trúc thư mục web mà tôi đề nghị với các bạn, tuỳ vào yêu cầu, sở thích riêng của mình mà các bạn có thể tự xây dựng cho riêng mình một cấu trúc hợp ý hơn.