A robust event management library for PHP applications. Allows easy registration, emission, and management of events with support for prefix event listeners.
AGPL-3.0 License
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);
});