1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/inhere-php-event-manager

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 23:31 dc16c7a

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/inhere-php-event-manager.git
git@api.gitlife.ru:oschina-mirror/inhere-php-event-manager.git
oschina-mirror
inhere-php-event-manager
inhere-php-event-manager
master