Використання подій
Дата оновлення перекладу 2022-12-15
Використання подій
Клас Transport` компонента Notifier дозволяє вам опціонально підключатися до життєвого циклу через події.
Подія MessageEvent::class
Типові цілі: Щоб зробити щось перед відправкою повідомлення (на кшталт логування того, яке повідомлення буде відправлено, або відображення чогось про подію, яка буде виконана).
Прямо перед відправкою повідомлення, оголошується клас події MessageEvent
. Слухачі
отримують подію MessageEvent:
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('The message with subject: %s has not been sent successfully. The error is: %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('The message has been successfully sent and have id: %s, $message->getMessageId()'));
});