Возможно ли организовать модель доменных событий используя возможности ZF-EventManager?
В общем смысле, проблема заключается в инъекции зависимости от SharedEventManager для объектов домена:
<?php
class Order{
private $eventManager;
public function __construct(){
$this->eventManager = new EventManager;
$this->eventManager->trigger(new CreateOrderEvent);
}
}
// Здесь приложение должно иметь возможность перехвата выброшенного события CreateOrderEvent
$order = new Order;
Пример демонстрирует проблему, связанную с недоступностью менеджера событий для регистрации обработчиков на нем.
Возможно аккумулировать все выброшенные объектом события в нем же (либо в менеджере) с последующим повторным выбросом их для обработки приложением:
<?php
$order = new Order;
$order->getEventManager()->attach(...); // Установка обработчиков уровня приложения
$events = $order->getEventManager()->pullEvents();
$app->getEventManager()->trigger($events); // Повторный выброс событий на уровне приложения
Приемлем ли подобный подход, или есть решение проще?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости