Plugin Manager (Bài trước)
(Bài tiếp) MVC trong Zend

Event Manager

Phần này chỉ giới thiệu qua một số khái niệm vì để học về phần này cần tìm hiểu nhiều khái niệm nâng cao khác, tạm thời ở thời điểm này bạn có thể bỏ qua chi tiết (nếu muốn nghiên cứu sâu luôn thì đọc Event Manager toàn tập)

Khái niệm về sự kiện - Event / MvcEvent

Một sự kiện là tạo ra đối tượng từ lớp Zend\EventManager\Event, thường sự kiện Event có các thành phần

  • name tên sự kiện
  • target đối tượng kích hoạt sự kiện
  • params các tham số dữ liệu truyền tới listener

Bạn thực tế có thể tạo ra định nghĩa sự kiện theo cách riêng bằng cách mở rộng lớp Event, ví dụ trong Zend MVC có định nghĩa MvcEvent (Zend\Mvc\MvcEvent) bằng cách mở rộng lớp Event trên, thêm một số phương thức và thuộc tính nhằm các mục đích hoạt động trong hệ thống mô hình MVC

EventManager và SharedEventManager

Một điều quan trọng nữa bạn cũng cần phân biệt EventManager và SharedEventManager, đều là hai đối tượng quản lý sự kiện trong ZF.

Một Event Manager thông thường không lưu giữ như là phiên bản duy nhất trong Service Manager, mỗi khi yêu cầu dịch vụ EventManager từ ServiceManager bạn sẽ nhận được một phiên bản mới đối tượng Event Manager. Mục đích về hiệu xuất và bảo mật:

  • Khi kích hoạt sự kiện nó sẽ yêu cầu SM lưu lại một cách riêng tư, vì không muốn các lớp bên ngoài lắng nghe được sự kiện.
  • Nếu cứ để các listener đều nghe được sự kiện sẽ dẫn tới thi hành rất nhiều listener, giảm hiệu xuất, thời gian tải sẽ tăng ..., do đó mà cần giữ Event riêng tư.

Nhưng nhiều trường hợp nếu một số chức năng cần lắng nghe các sự kiện khác nhau, thì lúc đó có SharedEventManager: bạn có thể gắn listener với một sự kiện riêng tư

Chi tiết về cách dùng Event Manager sẽ tìm hiểu trong các chuyên mục chi tiết.


Đăng ký nhận bài viết mới
Plugin Manager (Bài trước)
(Bài tiếp) MVC trong Zend