tưởng của Zend Framework. Dưới đây là mô tả về một số thành phần chính mà Joob hỗ trợ:
• Joob Bootstrap: Khởi tạo các tài nguyên hay dùng, như Session, Router,… Thực thi Front Controller. Các nhà phát triển cho thể kế thừa Joob Bootstrap cho nhu cầu của mình.
• Joob Front Controller: Thành phần được chạy ngay sau Bootstrap. Có nhiệm vụ khởi tạo Request, Dispatcher và chuyển vần xử lý request cho Dispatcher
• Joob Dispatcher: Dựa vào request để chuyển cho Module tương ứng. Xử lý bắt lỗi cho Module.
• Joob Module: Đóng vai trò Controller trong kiến trúc MVC. Là lớp cơ bản cho các Module khác kế thừa. Mỗi Module được chia thành các task, tương ứng với một dịch vụ con trong Module. Joob Module có 3 hàm đặc biệt là init() được gọi ngay sau khi Module được khởi tạo, preDispatch() được gọi ngay trước khi Module thực hiện task và postDispatch() được gọi ngay sau khi Module thực hiện task.
• Joob Model: Đóng vai trò Model trong kiến trúc MVC. Là thành phần trung gian đóng vai trò cầu nối giữa chương trình và database. Joob Model đặc trưng cho một bảng của cơ sở dữ liệu
• Joob View: Đóng vai trò View trong kiến trúc MVC. Hiển thị đầu ra dựa vào các tham số do Module truyền vào. Joob Framework hỗ trợ AjaxView (tức là kết quả trả về là một đối tượng được lưu dạng JSON) và ScriptView (tức là view là một file template bằng PHP, các biến sẽ được truyền vào thông qua Module). Tuy nhiên, do mục đích của Joob là hỗ trợ tầng máy chủ cho Joo Framework, cho nên các nhà phát triển được khuyến khích sử dụng AjaxView hơn.
• Joob Utils: cung cấp các hàm utility (tiện ích) như: chuẩn hóa dữ liệu đầu vào, kiểm tra tính hợp lệ của các dữ liệu đầu vào.
• Joob Log: hỗ trợ việc log lại các lỗi, cỏc cõu truy vấn và một số thao tác quan trọng trong ứng dụng khi người lập trình muốn debug.
Ngoài ra cũn cỏc thành phần bổ trợ:
• Session: Hỗ trợ quản lý Session. Khởi động hay hủy session, lưu trữ session. Joob hỗ trợ lưu trữ session dựa trên namespace (tức là mỗi session key sẽ được gắn thêm namespace vào trước, để tránh xung đột giữa nhiều key giống nhau).
• Registry: Hỗ trợ lưu trữ các dữ liệu toàn cục dạng key-value
• Autoloader: Hỗ trợ việc tự động nạp các class mà không cần đến require()
• …
Trong phạm vi đề tài này, người viết luận văn sẽ chỉ trình bày kiến trúc chi tiết phần Joob Model.
2.2.2. Kiến trúc chi tiết Joob Model
Joob Model là một thành độc lập trong framework, có nhiệm vụ ánh xạ các đối tượng trong cơ sở dữ liệu đến các lớp trong Model của ứng dụng, đồng thời cung cấp các phương thức cơ bản để xử lý với dữ liệu. Bao gồm:
• Kết nối với database
• Select
• Insert
• Delete
• Update
• Join
Ngoài ra Joob Model cung cấp ánh xạ giữa các mối quan hệ (relationship) của các bảng trong cơ sở dữ liệu quan hệ với đối tượng trong Model.
Joob Model tận dụng được một số đặc tính của Hibernate, đặc biệt là ý tưởng ánh xạ giữa các thuộc tính của đối tượng với các trường trong bảng cơ sở dữ liệu
(ORM – Object Relation Mapping), nhằm dễ dàng cho các nhà phát triển khi xây dựng thành phần Model trong kiến trúc MVC.
Mối quan hệ giữa các lớp trong Joob Model được thể hiện qua sơ đồ sau:
Hình 8 – Biểu đồ lớp Joob Model