/event-dispatcher

A full implementation for psr-14.

Primary LanguagePHP

一个基于PSR-14的事件调度器实现

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-14-event-dispatcher.md

定义一个事件
namespace app\Events;

class UserLogin
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;    
    }
}
namespace app\Events;

class UserLogout
{
    public $user;

    public function __construct($user)
    {
        $this->user = $user;    
    }
}
定义一个监听器
use App\Events\UserLogin;
use ChangZee\EventDispatcher\EventSubscriber;

class UserLoginListener extends EventSubscriber
{
    public function events(): array
    {
        return [
            UserLogin::class => 'handleLogin',
            UserLogout::class => ['handleLogout', 100], // 后面的数字为优先级
        ];
    }

    /**
     * @param UserLogin $event
     */
    public function handleLogin($event)
    {
        // pass
    }

    /**
     * @param UserLogout $event
     */
    public function handleLogout($event)
    {
        
    }


}
流程
$provider = new JigsawPuzzles\EventDispatcher\ListenerProvider();

$listener = new UserLoginSubscriber();
$listener->attachSubscriber($provider);

$dispatcher = new \JigsawPuzzles\EventDispatcher\EventDispatcher($provider);

// 分发事件
$dispatcher->dispatch(new UserLogin());