andrewdyer / event-dispatcher
一个简单的事件分发器,可以集成到您选择的框架中
v1.0.0
2020-02-14 16:48 UTC
Requires
- php: ^7.2.5
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^8.5
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-15 23:27:20 UTC
README
一个简单的事件分发器,可以集成到您选择的框架中。
许可
在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。