db.connect будут получены этим слушателем.
Конечно, если вы остановите распространение события перед тем, как оно достигнет слушателя $event->stopPropagation(true);
, то последующие слушатели не получат его.
Пример: в приведенном выше примере с групповым прослушивателем событий добавьте событие app.*
.
// AppListener новый метод
class AppListener
{
// ...
public function allEvent(EventInterface $event)
{
$pos = __METHOD__;
echo "обрабатывает событие '{$event->getName()}' на: $pos\n";
}
}
// ...
$em = new EventManager();
$groupListener = new AppListener();
// регистрируем групповой слушатель
$em->attach('app', $groupListener);
// все события с префиксом app. будут обрабатываться AppListener::allEvent()
$em->attach('app.*', [$groupListener, 'allEvent']);
// создаем приложение
$app = new App($em);
// запускаем.
$app->run();
Запустите: php examples/named-group.php
Вывод: (можно увидеть, что каждое событие было обработано AppListener::allEvent()
)
$ php examples/named-group.php
обрабатывает событие «app.start» на: Inhere\Event\Examples\AppListener::start
обрабатывает событие «app.start» на: Inhere\Event\Examples\AppListener::allEvent
обрабатывает событие «app.beforeRequest» на: Inhere\Event\Examples\AppListener::beforeRequest
обрабатывает событие «app.beforeRequest» на: Inhere\Event\Examples\AppListener::allEvent
обработка запроса ....
обрабатывает событие «app.afterRequest» на: Inhere\Event\Examples\AppListener::afterRequest
обрабатывает событие «app.afterRequest» на: Inhere\Event\Examples\AppListener::allEvent
обрабатывает событие «app.stop» на: Inhere\Event\Examples\AppListener::stop
обрабатывает событие «app.stop» на: Inhere\Event\Examples\AppListener::allEvent
Объект события — это объект, который содержит контекстную информацию, связанную с событием, которое произошло, и может быть настроен пользователем.
— Просто используйте класс Event
.
$myEvent = new Event('name', 'target', [ 'some params ...' ]);
— Используйте подкласс, унаследованный от Event
.
Таким образом, вы можете добавить пользовательские данные.
// создать класс событий
class MessageEvent extends Event
{
protected $name = 'messageSent';
// добавляем свойство ...
public $message;
}
MIT
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )