## Содержание - [Основы](#the-basics) - [Включение события](#firing-events) - [отслеживание события](#listening-to-events) - [Очередь событий](#queued-events) - [События Laravel](#laravel-events) ## основы События обеспечивают хороший способ построения не связанных приложений, и позволяет встраивать плагины в ядро ​​приложения без изменения кода. ## Включение события Для включения события, просто сообщите классу **Event** имя события, которое нужно включить: #### Включение события: $responses = Event::fire('loaded'); Заметьте, что мы присваиваем результат метода **fire** переменной. Этот метод возвращает массив, содержащий ответы от всех прослушиваемых событий. Иногда требуется включить событие, но получить только первый ответ от него: #### Включение события для получения только первого ответа: $response = Event::first('loaded'); > **Прримечание:** Метод **first** прослушивает все события, но возвращает только первый ответ. Метод **Event::until** выполняет процедуру обработки события до тех пор, пока не придет первый ненулевой ответ. #### Включение события до получения ненулевого ответа: $response = Event::until('loaded'); ## Прослушивание событий Какая польза от использования событий, которые никто не слушает? Регистрация обработчика события: #### Регистрация обработчика события: Event::listen('loaded', function() { // I'm executed on the "loaded" event! }); Анонимная функция обеспечивает исполнения кода при каждом возникновении события: ## Очередь событий Вы можете создать очередь событий, не исполняя их обработчики немедленно. Т.е. поставить собтия в очередь. Для этого существуют методы `queue`и `flush`. Сначала ставим событие в очередь с уникальным идентификатором: #### Регистрация очереди событий: Event::queue('foo', $user->id, array($user)); Этот метод принимает три параметра. Первый определяет имя очереди, второй - уникальный идентификатор ключа в очереди, и третий - массив параметров для передачи обработчику очереди. Далее, мы регистрируем обработчик для очереди `foo`: #### Регистрация обработчика: Event::flusher('foo', function($key, $user) { // }); Обработчик принимает два аргумента. Первый, уникальный идентификатор обрабатываемой очереди. Второй (и другие, при необходимости) передает параметры для события в очереди. Наконец, мы можем запустить обработчик очереди и обработать все события в очереди при помощи метода `flush`: Event::flush('foo'); ## События Laravel Здесь собраны события ядра Laravel: #### Событие, отрабатываемое при старте бандла: Event::listen('laravel.started: bundle', function() {}); #### Событие, отрабатываемое при запросе к базе данных: Event::listen('laravel.query', function($sql, $bindings, $time) {}); #### Событие, отрабатываемое перед передачей ответа в браузер: Event::listen('laravel.done', function($response) {}); #### Событие, отрабатываемое при логировании сообщения с использованием класса Log: Event::listen('laravel.log', function($type, $message) {});