Может войдёшь?
Черновики Написать статью Профиль

События

перевод документация 3.x

Содержание

основы

События обеспечивают хороший способ построения не связанных приложений, и позволяет встраивать плагины в ядро ​​приложения без изменения кода.

Включение события

Для включения события, просто сообщите классу 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) {});

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.