Справочник
ChannelInterface v200.1.0
Контракт канала доставки уведомлений и регистрация в ChannelRegistry
Описание: интерфейс канала доставки. Реализации в ядре: SiteChannel, EmailChannel, PmChannel. Свой канал — отдельный класс с тем же контрактом.
Namespace: DevCraft\Modules\Notifications\Channels
С версии: 200.1.0
См. также:
Методы
id(): string
Описание: уникальный ключ канала (site, email, pm или свой ключ).
Возвращает: string
deliver(ChannelDeliveryContext $ctx): bool
Описание: отправляет одно уведомление получателю. При ошибке возвращает false (исключения лучше ловить внутри).
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
$ctx | ChannelDeliveryContext | Получатель, тело, vars, cfg, служебные поля события |
Возвращает: bool — успех доставки
ChannelRegistry
Синглтон ChannelRegistry::instance():
| Метод | Описание |
|---|---|
register(ChannelInterface $channel) | Добавить / заменить канал по id() |
get(string $id) | Канал или null |
all() | Все каналы (сначала базовые site/email/pm, затем соседние модули) |
ids() | Список id |
При первом обращении к реестру вызывается SatelliteLoader::boot().
Пример
use DevCraft\Modules\Notifications\Channels\ChannelRegistry;
ChannelRegistry::instance()->register(new \DevCraft\Modules\MyMod\Channels\DiscordChannel());
$channel = ChannelRegistry::instance()->get('discord');Практическое руководство: Свой канал доставки.