Events

Скачивания Коммиты Версия Версия PHP Лицензия

Библиотека событий

Localzet Events — это простая и эффективная система управления событиями для PHP приложений. Она позволяет легко регистрировать, вызывать и управлять событиями.

Установка

Вы можете установить библиотеку с помощью Composer. Просто выполните команду:

composer require localzet/events

Использование

Регистрация обработчиков событий

Вы можете регистрировать обработчики событий с помощью метода on. Метод on принимает имя события и callable или массив в качестве обработчика.

use localzet\Events;

// Регистрация простого callable обработчика
Events::on('user.created', function($data, $eventName) {
    echo "Пользователь создан с данными: " . json_encode($data);
});

// Регистрация метода класса в качестве обработчика
Events::on('user.deleted', [UserHandler::class, 'handleUserDeleted']);

Вызов событий

Чтобы вызвать событие, используйте метод emit. Метод emit принимает имя события, данные и необязательный флаг остановки. Флаг остановки прекращает выполнение после первого обработчика, вернувшего ненулевой ответ.

// Вызов события
$data = ['id' => 1, 'name' => 'John Doe'];
Events::emit('user.created', $data);

Удаление обработчиков событий

Вы можете удалить обработчики событий с помощью метода off. Метод off требует имя события и ID обработчика.

$listenerId = Events::on('user.updated', function($data, $eventName) {
    echo "Пользователь обновлен с данными: " . json_encode($data);
});

// Удаление обработчика
Events::off('user.updated', $listenerId);

Список всех обработчиков событий

Вы можете получить список всех зарегистрированных обработчиков событий с помощью метода list.

$listeners = Events::list();
print_r($listeners);

Проверка наличия обработчиков событий

Чтобы проверить, есть ли зарегистрированные обработчики для конкретного события, используйте метод has.

if (Events::has('user.created')) {
    echo "Есть обработчики для события user.created.";
}

Продвинутые функции

Обработчики событий с префиксами

Вы можете регистрировать обработчики для событий с общим префиксом, используя символ *.

// Регистрация обработчика для всех событий user.*
Events::on('user.*', function($data, $eventName) {
    echo "Событие $eventName вызвано с данными: " . json_encode($data);
});