pe/component-event

简单的事件分发器

v1.1.0 2023-05-29 08:28 UTC

This package is auto-updated.

Last update: 2024-08-29 11:20:32 UTC


README

以下版本的PHP受支持。

  • PHP 7.4+

安装

要安装,请使用composer

php composer.phar require pe/component-event

用法

最小化用法

namespace PE\Component\Event;

// Create emitter instance, maybe in some DI container
$emitter = new Emitter();

// Attach listener to some event
$emitter->attach('event_name', function ($foo, $bar) {
    // do something
});
// Also you can attach as generic listener for allow stop propagation
$emitter->attach('event_name', function (Event $event) {
    $event->stop();// <-- call for stop propagation
});

// Dispatch event somewhere in logic
$emitter->dispatch(new Event('event_name', $foo, $bar));

扩展用法

<?php
namespace PE\Component\Event;

// Create your own event class for store specific payload or modify it in listeners
class SomeEvent
{
    public string $message = 'A';
}

$emitter = new Emitter();

// Listener A, it's important to first arg be same as event class
$emitter->attach(SomeEvent::class, function (SomeEvent $event) {
    $event->message = 'B';
});
// Listener B
$emitter->attach(SomeEvent::class, function (SomeEvent $event) {
    echo $event->message;// <-- here message is "B"
});
$emitter->dispatch(new SomeEvent());

注意:每个监听器可以带有优先级,优先级值越低,监听器越早触发