событие домена symfony

Я пытаюсь реализовать дизайн, управляемый доменами, в моем проекте Symfony2, и у меня возникают некоторые проблемы. Прочитав несколько статей о моделях предметной области, я обнаружил, что

  • я должен поставить все на свои места. логики в мои модели предметной области (сущности).
  • То, что необходимо сделать на уровне приложения и не относится к логике домена, запускается с помощью событий домена (отправка электронных писем, помещение некоторых сообщений в очередь и т. Д.)

К счастью, Symfony предоставляет события, но здесь это проблема - я не могу вызвать событие из своей сущности. В документации Symfony предлагается использовать DI для внедрения диспетчера в класс, который вызывает событие

http://symfony.com/doc/current /book/internals.html#passing-along-the-event-dispatcher-object

Но сущности Symfony являются новыми, а не инъекционными. Прямо сейчас я вижу два пути:

1) Предоставить событие Dispather для Entity, как это

class FooEntity
{
    protected $dispatcher = null;

    public function setEventDispatcher(EventDispatcher $dispatcher)
    {
        $this->dispatcher = $dispatcher;
    }
}

2) Вызвать события из службы (не из Entity).

Ни один из этих вариантов не выглядит привлекательным, потому что мне кажется, что они нарушают идеологию модели предметной области. Не могли бы вы указать мне правильное направление, пожалуйста.

6
задан mik 7 November 2011 в 18:02
поделиться