Bạn đưa ra một câu hỏi rất thú vị và cơ bản. Câu hỏi liên quan đến kiến trúc dự án quy mô lớn và tổ chức cấu trúc thư mục (là thứ yếu của kiến trúc).
Ngày nay, cách tiếp cận phổ biến nhất để xây dựng kiến trúc khung CMS là sử dụng mẫu MVC. Có một số bài viết hay về xây dựng khung MVC của riêng bạn, một trong số đó là Xây dựng khung MVC với PHP .
MVC là viết tắt của Model, View, Controller. Bạn có thể gọi những cách tiếp cận này bất cứ điều gì bạn thích - MVC, HMVC, MVP. Bản chất là cô lập các thành phần riêng lẻ trong hệ thống của bạn. "Trình điều khiển" lấy dữ liệu từ "Mô hình" và gửi chúng đến "Chế độ xem", kết xuất lại HTML cuối cùng. Bạn đã thực hiện "V" trong contacts.php
và "MC" trong của bạn contacts_class.php
. Vì vậy, bạn đã tách biệt khung nhìn khỏi mô hình và bộ điều khiển. Bây giờ bạn có thể dễ dàng thay đổi "Chế độ xem" của mình để nguyên các phần khác.
Tôi không đề nghị bạn mù quáng theo mô hình MVC, MVP hay bất cứ thứ gì khác "MV". Đó là vấn đề của sự phù hợp, hiệu quả và hương vị.
Ứng dụng trang web động phổ biến có thể bao gồm các thành phần như:
- Điểm vào, nói
index.php
- Các thư viện / lớp trợ giúp
- Bộ định tuyến yêu cầu
- Các mô-đun, thành phần hoặc bộ điều khiển
- Công cụ mẫu hoặc có thể là các chế độ xem đơn
Ứng dụng web thực sự có thể bao gồm bất kỳ thành phần nào khác như trình xử lý sự kiện, trình điều khiển sự kiện và hook, nhưng thực tế đây là những sắc thái. Vâng, hãy để tôi trình bày nó theo cách tôi muốn trình bày nó:
Quy trình hoạt động khung chung như sau:
- Yêu cầu trình duyệt được gửi trực tiếp đến điểm thực thi / script (
index.php
).
- Kịch bản điểm nhập tải các thư viện trợ giúp, các lớp và thực hiện một số khởi tạo tiếp theo của môi trường lập trình của chúng tôi.
- URL được chuyển đến thể hiện của bộ định tuyến yêu cầu. Bước này có thể là một phần của bước 2.
- Bộ định tuyến yêu cầu phân tích cú pháp URL và gửi hoạt động đến một thành phần, mô-đun hoặc bộ điều khiển cụ thể.
- Thành phần (hoặc bộ điều khiển) xử lý yêu cầu được định tuyến và gửi dữ liệu đến dạng xem được hiển thị.
Cấu trúc thư mục dự án tương ứng được hiển thị trong sơ đồ.
Tôi sẽ đề nghị bạn điều tra làm thế nào các khung công tác khác được thực hiện. Các CMS / khung được đề xuất để bắt đầu là CodeIgniter, OpenCart, Joomla 1.5 và Tango CMS.