Использование событий
Использование событий
Класс Transport` компонента Notifier позволяет вам опционально подключаться к жизненному циклу через события.
Событие MessageEvent::class
Типичные цели: Делать что-то до отправки сообщения (вроде логирования, какое сообщение будет отправлено, или отображения чего-то о событии, которое будет выполнено).
Just before send the message, the event class MessageEvent
is
dispatched. Listeners receive a
MessageEvent event:
1 2 3 4 5 6 7 8 9
use Symfony\Component\Notifier\Event\MessageEvent;
$dispatcher->addListener(MessageEvent::class, function (MessageEvent $event) {
// получает экземпляр сообщения
$message = $event->getMessage();
// записать лог чего-то
$this->logger(sprintf('Message with subject: %s will be send to %s, $message->getSubject(), $message->getRecipientId()'));
});
Событие FailedMessageEvent
Типичные цели: Делать что-то до вызова исключения (повторная попытка отправки сообщения или запись лога дополнительной информации).
Когда вызывается исключение во время отправки сообщения, развёртывается класс события
FailedMessageEvent
. Слушатель может сделать что угодно полезное до вызова исключения.
Слушатели получают событие FailedMessageEvent:
1 2 3 4 5 6 7 8 9 10 11 12
use Symfony\Component\Notifier\Event\FailedMessageEvent;
$dispatcher->addListener(FailedMessageEvent::class, function (FailedMessageEvent $event) {
// получает экземпляр сообщения
$message = $event->getMessage();
// получает экземпляр ошибки
$error = $event->getError();
// записать лог чего-то
$this->logger(sprintf('Сообщение с темой: %s не было отправлено успешно. Ошибка: %s, $message->getSubject(), $error->getMessage()'));
});
Событие SentMessageEvent
Типичные цели: Выполнить какое-то действие, когда сообщение успешно отправлено (типа извлечения id, возвращённого, когда сообщение было отправлено).
После успешной отправки сообщения, развёртывается класс события SentMessageEvent
. Слушатели
получают событие SentMessageEvent:
1 2 3 4 5 6 7 8 9
use Symfony\Component\Notifier\Event\SentMessageEvent;
$dispatcher->addListener(SentMessageEvent::class, function (SentMessageEvent $event) {
// получает экземпляр сообщения
$message = $event->getOriginalMessage();
// записать лог чего-то
$this->logger(sprintf('Сообщение было успешно отправлено и имеет id: %s, $message->getMessageId()'));
});