美文网首页
PHP 事件机制练习代码

PHP 事件机制练习代码

作者: 睡觉吹灯 | 来源:发表于2020-08-10 21:56 被阅读0次

注意:以下代码纯属练习。想要实现优良的事件机制,请参考 PSR-14 规范。

/**
 * 事件类的接口
 * Interface EventInterface
 */
interface EventInterface{
    public function listener(): array;
}

/**
 * 登出事件
 * Class LogoutEvent
 */
class LogoutEvent implements EventInterface
{
    /**
     * @var object 保存一个触发事件的对象
     */
    public $target;

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

    /**
     * 返回监听这个事件的类名
     * @return string[]
     */
    public function listener(): array
    {
        return [
            LogoutListener::class,
        ];
    }

}

/**
 * 监听类接口
 * Interface ListenerInterface
 */
interface ListenerInterface
{
    public function process(EventInterface $event);
}

/**
 * 监听类
 * Class LogoutListener
 */
class LogoutListener implements ListenerInterface
{

    /**
     * 事件触发后执行的代码
     * @param EventInterface $event
     */
    public function process(EventInterface $event)
    {
        echo 'See you next time, ' . $event->target->username . PHP_EOL;
    }
}

/**
 * 事件调度器
 * Class EventDispatch
 */
class EventDispatch{

    private $event;
    public function __construct(EventInterface $event){
        $this->event = $event;
    }

    public function dispatch()
    {
        $listeners = $this->event->listener();
        foreach ($listeners as $listener)
        {
            $listenerObj = new $listener();
            $listenerObj->process($this->event);
        }
    }

}

class App {
    public function logout(){
        $user = new \stdClass();
        $user->username = 'Lee';
        $event = new LogoutEvent($user);
        $eventDispatch = new EventDispatch($event);
        $eventDispatch->dispatch();
    }
}

$app = new App();
$app->logout();

相关文章

  • PHP 事件机制练习代码

    注意:以下代码纯属练习。想要实现优良的事件机制,请参考 PSR-14 规范。

  • Node.js事件驱动机制

    使用事件驱动机制编写事件处理代码

  • redis中sub/pub的问题?

    研究了redis的pub/sub机制,写了2个php页面测试,页面如下。其中a.php的代码如下: b.php如下...

  • Android事件机制(三)

    Android事件机制(一)从代码演示的角度整理了一下我对Android事件传递的理解;Android事件机制(二...

  • Android 事件分发机制

    事件分发机制:本章采用:代码 + 思维导图的形式描述事件机制1、Activity2、ViewGroup3、View...

  • react合成事件

    事件机制源代码解析:地址地址2 机制详解: 1.合成事件不是将事件具体绑定到对应DOM上,而是在内存中保存一个管理...

  • js初识第九节

    事件的传播机制,捕获和冒泡 事件委托的含义,使用,优点 一个打字游戏的综合练习

  • 验证ios的通知机制是同步还是异步

    与JavaScript中的事件机制不同,iOS里的事件广播机制是同步的,默认情况下,广播一个通知,会阻塞后面的代码...

  • 理解PHP与Node的IO处理机制

    以下分析了php和node如何处理一个以及多个Http请求以及代码中的IO操作处理机制。 PHP的实现:基本流程:...

  • php内存缓存实现程序代码

    php内存缓存实现程序代码 1、普遍缓存技术:数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页...

网友评论

      本文标题:PHP 事件机制练习代码

      本文链接:https://www.haomeiwen.com/subject/yedsdktx.html