我是靠谱客的博主 霸气小蜜蜂,最近开发中收集的这篇文章主要介绍PHP事件机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先用 3W1H(who what why how) 分析法的思路来解释一下 事件机制, 更重要的是, 这个有什么用.

正常的程序执行, 或者说人的思维趋势, 都是按照 时间线性串行 的, 保持 连续性. 不过现实中会存在各种 打断, 程序也不是永远都是 就绪状态, 那么, 就需要有一种机制, 来处理可能出现的各种打断, 或者在程序不同状态之间切换.

 

事件机制发展到现在, 有时候也算是一种预留手段, 根据你的经验在需要的地方 埋点, 方便之后 打补丁.

swoft 的事件机制基于 PSR-14 实现, 高度内聚简洁.

由三部分组成:

  • EventManager: 事件管理器
  • Event: 事件
  • EventHandler / Listener: 事件处理器/监听器

执行流程:

  • 先生成 EventManager
  • 将 Event 和 EventHandler 注册到 EventManager
  • 触发 Event, EventManager 就会调用相应的 EventHandler

使用起来就更加简单了:

namespace SwoftEvent;
class ListenerQueue implements IteratorAggregate, Countable
{
protected $store;
/**
* 优先级队列
* @var SplPriorityQueue
*/
protected $queue;
/**
* 计数器
* 设定最大值为 PHP_INT_MAX == 300
* @var int
*/
private $counter = PHP_INT_MAX;
public function __construct()
{
$this->store = new SplObjectStorage(); // Event 对象先添加都这里
$this->queue = new SplPriorityQueue(); // 然后加入优先级队列, 之后进行调度
}
...
}

  

稍微玩过 ACM 的人对 优先级队列 就不会陌生了, 基本所有 OJ 都有相关的题库. 不过 PHPer 不用太操心底层实现, 直接借助 SPL 库即可.

 

转载于:https://www.cnblogs.com/sandea/p/10578249.html

最后

以上就是霸气小蜜蜂为你收集整理的PHP事件机制的全部内容,希望文章能够帮你解决PHP事件机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部