locky42/leopard-events 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

locky42/leopard-events

最新稳定版本:1.0.0

Composer 安装命令:

composer require locky42/leopard-events

包简介

A library for handling PSR-14 events.

README 文档

README

Library for working with events in PSR-14 style for PHP 8.3+.

Installation

composer require locky42/leopard-events

Main Classes

  • EventManager — static facade for registering and dispatching events
  • ListenerProvider — stores listeners
  • EventDispatcher — calls listeners for an event

Usage Example

Declaring an Event

// Any simple class-object can be an event
class MyEvent {
    public function __construct(public ?object $obj = null) {}
    public $handled = false;
    public $updated = false;
}

class AnotherEvent {}

Registering a Listener

use Leopard\Events\EventManager;
use MyEvent;

// example
$user = Session::getUser();
EventManager::addEvent(new MyEvent($user), function ($event) {
    $event->obj->isNew = false;
});

Dispatching an Event

$event = EventManager::doEvent(MyEvent::class);
if ($event->handled) {
    // event was handled
}

or

EventManager::doEvent(MyEvent::class);

Passing an Object to an Event

$obj = new \stdClass();
$obj->value = 10;
EventManager::addEvent(new MyEvent($obj), function ($event) {
    $event->obj->value = 20;
});
EventManager::doEvent(MyEvent::class);
// $obj->value == 20

Adding a Listener as a Class Method

EventManager::addEvent(new MyEvent(), [$this, 'updateObject']);

Removing a Listener

EventManager::removeEvent(new MyEvent(), [$this, 'updateObject']);

Clearing All Listeners

EventManager::getProvider()->clearListeners();

Testing

Tests are located in tests/ and use PHPUnit.

Run:

./vendor/bin/phpunit --bootstrap vendor/autoload.php tests

License

MIT

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-24