В вашем случае нет той части, которая подписана на событие. Вы его возбуждаете, но его никто не слушает.
Вот ваш пример, только через глобальные события:
class MessageSendEvent extends Event
{
const EVENT_MESSAGE_SEND = 'message-send-event';
/**
* @var string
*/
public $message;
/**
* ...
*/
public function send ()
{
echo $this->message;
}
}
Теперь подписываемся и "слушаем" событие:
# Вешаем обработчик события
Yii::$app->on( MessageSendEvent::EVENT_MESSAGE_SEND, function ( MessageSendEvent $event ) {
$event->send();
} );
И в нужный момент возбуждаем его:
# Инициируем событие
Yii::$app->trigger(
MessageSendEvent::EVENT_MESSAGE_SEND,
new MessageSendEvent( [
'message' => 'Сообщение!'
] )
);
Но блин, у вас тут такой оверхед, что подобный пример нет смысла использовать. Проще вызвать самому ->send() и все, без всяких там событий.
UPD: Объект Event, он по сути является носителем данных. Сам он НЕ должен выполнять работу. Он лишь должен доставить нужные данные воркеру, а воркер содержит всю логику.