【发布时间】:2012-03-03 21:33:24
【问题描述】:
对于如何在 PHP 应用程序中实现插件是否有共识?
我查看了接近的observer pattern,它实际上只是一个通知系统,不允许代码直接扩展应用程序。我目前正在使用我想出的一个简单的钩子系统:
public function registerHook($hookName, array $params = array())
{
$this->hooks[] = $hookName;
foreach ( $this->plugins as $pluginName => $hooks ) {
if ( in_array($hookName, $hooks) ) {
$plugin = new $pluginName($this, $this->view, $this->controller);
$plugin->{$hookName}($params);
}
}
}
这对我的目的很有效,但我很好奇是否有一种设计模式已经过多次测试和证明,而我只是在重新发明轮子。
【问题讨论】:
-
我建议看看它是如何与 Wordpress 一起工作的。我不了解自己,但我感觉它在使用钩子,而 BOY 确实 wordpress 有很多插件。好问题,赞成。
-
@Relequestual 我熟悉 WordPress,他们采用“操作”的程序方法。 codex.wordpress.org/Function_Reference/add_action
-
我想说这个问题不是骗人的,但在某种程度上它是。似乎在这里讨论了共识stackoverflow.com/questions/42/…
-
我读过,但这是一个旧线程。 PHP 5.3 有许多可以利用的 OO 特性。
-
使用观察者模式,您可以/需要在您希望能够扩展代码的位置激活观察者。 IE。你需要有指定的触发点,在这些触发点上你会碰到你的观察者,并让他们告诉你是否还有其他事情需要做。绝对不是插入代码的最干净的方式。
标签: php oop design-patterns plugins observer-pattern