【发布时间】:2015-01-27 17:40:56
【问题描述】:
我已经为 php 中的软件创建了一个插件系统。为了让插件改变程序的行为,我编写了这个(简化的)代码:
class PluginController {
/* ... */
public function addHook($name, $function, $priority = 10) {
/* store the function callback $function associated with $name */
}
public function executeHook($name, $args = array()) {
/* execute all function callbacks associated with $name
* in order of their priority and return their results */
}
}
因此插件可以使用addHook 添加回调,并且在应用程序的某处通过调用executeHook 来执行这些回调。
这很好用,但是在阅读了一些关于该主题的时间后,我仍然不确定这种技术是 event- 还是 hook- 系统。
一些消息来源说差异与松散和紧耦合有关。 其他人说钩子有返回值,而事件没有。并且其他人再次说事件是用于处理异步活动的,而挂钩只是为了在某些时候注入代码。
再说一遍,上面的代码是关于events还是hooks,有人能解释一下区别吗?
【问题讨论】:
标签: php events architecture hook