DevCraft Документации
Справочник

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 (исключения лучше ловить внутри).

Параметры:

ПараметрТипОписание
$ctxChannelDeliveryContextПолучатель, тело, 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');

Практическое руководство: Свой канал доставки.

На этой странице