kornheiser/events

事件管理,处理

v1.1.0 2022-01-24 22:41 UTC

This package is not auto-updated.

Last update: 2024-09-21 08:51:24 UTC


README

Events

Version Downloads License PHPVersion

安装

composer require kornheiser/events

示例

创建您自己的事件

use Kornheiser\Event\Event;

class NewMessageEvent implements Event {
    
    public function __construct(
        public string $text,
        public int $time,
        public string $senderMail
    ): void {}
}

处理

简单处理器

use Kornheiser\Event\Handler;

class NewMessageHandler implements Handler {
    
    public function onHandle(Event $ev): void {
        var_dump($ev->text, $ev->time, $ev->senderMail);
    }
}

可调用处理器

use Kornheiser\Event\CallableHandler;

$callableHandler = new CallableHandler(function(Event $ev) {
    echo $ev->senderMail . ": " . $ev->text;
});

目标处理器

目标处理器与常规处理器不同,它只针对一次特定的事件,参见

use Kornheiser\Event\TargetedHandler;

$handler1 = new TargetedHandler(NewMessageEvent::class, new NewMessageHandler());
$handler2 = new TargetedHandler(NewMessageEvent::class, $callableHandler);

结论

use Kornheiser\Event\EventManager;

$invoker = new EventManager();

$invoker->addHandler($handler1);
$invoker->addHandler($handler2);

$invoker->call(new NewMessageEvent(text: "hello world", time: time(), senderMail: "some programmer"));