承接 next/event 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

next/event

最新稳定版本:0.2.0

Composer 安装命令:

composer require next/event

包简介

Event based on the PSR-14 specification

README 文档

README

如何使用

创建监听器

use Next\Event\Contract\EventListenerInterface;

class UserStatusListener implements EventListenerInterface
{
    /**
    * 返回该监听器监听的事件
    * @return string[]
    */
    public function listen():array {
        return [
            \App\Events\UserRegistered::class,
        ];
    }

    /**
    * 触发事件后的处理
    * @param object $event
    */
    public function process(object $event): void
    {
        $event->user = false;
    }
    
    /**
    * 监听器优先级
    * 如果一个事件被多个监听器监听,那么执行顺序可以通过该方法调整
    * 优先级数字越大,优先级越高,越先执行
    * @return int
    */
    public function getPriority(): int 
    {
        return 0;
    }
}

如果你不需要调整优先级,可以直接继承Next\Event\EventListener

需要创建一个事件类

class UserRegistered
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }
}

实例化ListenerProvider, 使用addListener添加监听器

$listenerProvider = new ListenerProvider();
$listenerProvider->addListener(new UserStatusListener());

实例化调度器,给构造函数传入ListenerProvider实例

$dispatcher = new \Next\Event\EventDispatcher($listenerProvider);

事件调度

$user = User::find(1);

$event = $dispatcher->dispatch(new UserRegistered($user));

可终止事件

事件实现StoppableEventInterface接口中的isPropagationStopped方法,并且返回true,则不会触发该事件之后的事件

class UserRegistered implements StoppableEventInterface
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function isPropagationStopped() : bool 
    {
        return true;
    }
}

统计信息

  • 总下载量: 31
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2023-10-31