PHP-PHP如何优雅地实现hook?

需求定制 需求定制 主题:1050 回复:2283

PHP-PHP如何优雅地实现hook?

浮生未歇 发布于 2017-06-18 字数 62 浏览 1224 回复 1

不同的人有不同的实现,但是怎样实现看起起来更好一点呢...

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

甜柠檬 2017-09-26 1 楼

一个好的Hook应该具备的功能:

随时可以注册事件
随时可以触发事件
可以解除已经注册的事件
事件具备优先级
事件内部可以取到事件触发的源

参考js,as等语言的事件设计,php实现的比较好的hook最终的对外接口应该是这样的:

注册事件部分

$events = new Hook();
$events->attach(array('Event Name 1', 'Event Name 2'), $callback, $priority);

触发事件部分

$events->trigger('Event Name 1', $eventTarget);

至于内部实现有很多方法,简单的可以用单例模式或者队列,你可以参考Zend Framework2的EventManager的源代码