Bài viết mô tả thiết kế hệ thống bao gồm các đề mục lớn sau
– Cấu trúc thư mục
– Luồng xử lý dữ liệu
– Các chú ý

Cấu trúc thư mục:

  • assets: Chứa các tài nguyên về JS, CSS, Images
  • languages: Chứa các file languages
  • shinetheme: folder chứa code chính
    • configs: Chứa các file cấu hình hệ thống
    • controllers: Chứa các lớp xử lý sự kiện của hệ thống
    • cores: Chứa các lớp lõi của hệ thống
    • helpers: Tập hợp các functions riêng rẽ để thao tác nhanh với hệ thống
    • libraries: Chứa các thư viện phục vụ từng mục đích riêng, các thư viện của bên thứ 3 – thư viện được tổ chức thành các lớp
      • gateways: Các lớp payment gateway
      • service-types: Các lớp service-types
    • models: Các lớp tương tác với cơ sở dữ liệu
    • views: Các file layout, template cho frontend và backend
      • frontend: Layout cho frontend
      • backend: Layout bên trong admin
    • widgets: Các lớp widget

Luồng xử lí dữ liệu:

* Lưu ý: Luồng xử lí dữ liệu sau đây là ko bắt buộc nhưng được đề nghị để tăng tính mạch lạc cho hệ thống và dễ mở rộng sau này

  1. Controllers có trách nhiệm Register các Action, filter, Post Type, Ajax Action,Shortcodes, Taxonomy…. từ đó đưa ra các lời gọi hàm callback tương ứng
  2. Khi cần lấy xử lý dữ liệu, Controller gọi 1 thực thể của Model tương ứng. Model ở đây được thiết kế hỗ trợ Active Record (Cung cấp các phương thức để xây dựng query một cách logic). Sau khi lấy được dữ liệu, Controller có thể load dữ liệu đó lên view qua các function:wpbooking_load_view() – cho frontend và wpbooking_admin_load_view() – cho backend
  3. Khi cần xử lý các chức năng đặc biệt, ta có thể tách ra thành các thư viện và đặt trong thư mục libraries. Trong thư viện chỉ được phép cung cấp các phương thức trợ giúp cho controller. Ko được xử lý trực tiếp dữ liệu từ Client, chỉ được phép xử lý nếu Controller cung cấp action hoặc filter tương ứng
  4. Views có nhiệm vụ hiển thị dữ liệu tương ứng cho Client

Các chú ý:

  • Payment Gateways: Nằm trong thư mục libraries/gateways. Khi tạo 1 gateway mới bắt buộc nằm trong thư mục này
  • Service Types: Nằm trong thư mục libraries/service-types. Phần này chứa quản trị cho các service types
  • Trong hệ thống có sử dụng thư viện Omnipay để thiết lập các cổng thanh toán. Bạn có thể tìm thấy trong thư mục libraries/vendor (Chú ý, Omnipay được cài đặt qua Composer, click vào đây để tìm hiểu thêm về composer).
  • Việc đặt tên file, folder mới là ko bắt buộc nhưng được khuyến khích sử dụng tên viết thường và tuân theo cấu trúc thư mục hiện tại của hệ thống