螺旋包 / 联盟事件
Spiral 框架的联盟事件网关
1.0.1
2022-09-14 08:02 UTC
Requires
- php: ^8.1
- league/event: ^3.0
- spiral/events: ^3.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- spiral/testing: ^2.0
- vimeo/psalm: ^4.22
This package is auto-updated.
Last update: 2024-09-09 15:16:14 UTC
README
需求
请确保您的服务器已配置以下 PHP 版本和扩展
- PHP 8.1+
- Spiral 框架 3.0+
安装
您可以通过 composer 安装此包
composer require spiral-packages/league-event
安装包后,您需要从包中注册引导加载器。
protected const LOAD = [ // ... \Spiral\League\Event\Bootloader\EventBootloader::class, ];
注意 如果您正在使用
spiral-packages/discoverer
,则无需自行注册引导加载器。
用法
事件
一个事件可以用一个简单的类表示
namespace Spiral\Router\Event; use Spiral\Router\RouteInterface; final class RouteFound { public function __construct( public readonly RouteInterface $route ) { } }
派发事件
$this->container->get(EventDispatcherInterface::class)->dispatch(new RouteNotFound($request));
监听器
一个监听器可以用一个简单的类表示,其中包含一个将被调用来处理事件的函数。函数名称可以在监听器属性参数或配置文件中配置(默认为 __invoke
)
namespace App\Listener; use Spiral\Events\Attribute\Listener; use Spiral\Router\Event\RouteFound; class RouteListener { public function __invoke(RouteFound $event): void { // ... } }
通过配置文件注册监听器
// file app/config/events.php use App\Listener\RouteListener; use Spiral\Events\Config\EventListener; use Spiral\Router\Event\RouteFound; return [ 'listeners' => [ // without any options RouteFound::class => [ RouteListener::class, ], // OR // with additional options RouteFound::class => [ new EventListener( listener: RouteListener::class, method: 'onRouteFound', priority: 1 ), ], ] ];
通过属性注册监听器
该属性可以不使用任何额外参数使用。然后,将使用方法名称 __invoke
和方法参数的类型中的事件
namespace App\Listener; use Spiral\Events\Attribute\Listener; use Spiral\Router\Event\RouteFound; #[Listener] class RouteListener { public function __invoke(RouteFound $event): void { // ... } }
所有可用选项
namespace App\Listener; use Spiral\Events\Attribute\Listener; use Spiral\Router\Event\RouteFound; #[Listener(event: RouteFound::class, method: 'onRouteFound', priority: 1)] class RouteListener { public function onRouteFound(RouteFound $event): void { // ... } }
该属性可以直接用于方法,然后可以省略方法名称
namespace App\Listener; use Spiral\Events\Attribute\Listener; use Spiral\Router\Event\RouteFound; class RouteListener { #[Listener(priority: 1)] public function onRouteFound(RouteFound $event): void { // ... } }
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。