andrewdyer/event-dispatcher

一个简单的事件分发器,可以集成到您选择的框架中

v1.0.0 2020-02-14 16:48 UTC

This package is auto-updated.

Last update: 2024-09-15 23:27:20 UTC


README

Latest Stable Version Total Downloads Daily Downloads Monthly Downloads Latest Unstable Version License composer.lock

一个简单的事件分发器,可以集成到您选择的框架中。

许可

在MIT许可下。完全免费用于私人或商业项目。

安装

composer require andrewdyer/event-dispatcher

用法

$dispatcher = new Anddye\EventDispatcher\EventDispatcher();

// add listeners for when a user signed up event is dispatched
$dispatcher->addListener('UserRegistered', new App\Listeners\SendSignedUpEmail());
$dispatcher->addListener('UserRegistered', new App\Listeners\UpdateLastSignedInDate());

// create a user somehow
$user = new App\Models\User();
// ...

// create the user signed up event and dispatch it
$dispatcher->dispatch(new App\Events\UserSignedUp($user));

事件

所有事件都必须是 Anddye\EventDispatcher\Events\EventInterface 的实例,并最好扩展 Anddye\EventDispatcher\Events\AbstractEvent - 它将默认实现所需接口。

当事件被分发时,它通过一个唯一名称来识别。默认情况下,事件的名称将是类的名称,但是您可以手动设置事件名称,通过重写 getName() 方法。

namespace App\Events;

use Anddye\EventDispatcher\Events\AbstractEvent;

class UserSignedUp extends AbstractEvent
{
    public function getName(): string
    {
        return 'UserRegistered';
    }
}

监听器

所有监听器都必须是 Anddye\EventDispatcher\Listeners\ListenerInterface 的实例,并最好扩展 Anddye\EventDispatcher\Listeners\AbstractListener - 它将默认实现所需接口。

namespace App\Listeners;

use Anddye\EventDispatcher\Events\EventInterface;
use Anddye\EventDispatcher\Listeners\AbstractListener;

class SendSignedUpEmail extends AbstractListener
{
    public function handle(EventInterface $event): void
    {
        // TODO: This is where you would send the signed up email to the user!
    }
}

支持

如果您正在使用此包,我很乐意听听您的想法!请在 Twitter 上与我联系。

发现了一个错误?请使用 问题跟踪器 报告,或者更好的是,fork 仓库并提交一个 pull request。