在PHP应用程序中实现插件的设计模式

Elb*_*ias 24 php oop plugins design-patterns observer-pattern

关于如何在PHP应用程序中实现插件有共识吗?

我已经研究了接近的观察者模式,它实际上只是一个通知系统,并且不允许代码直接扩展应用程序.我目前正在使用我提出的简单钩子系统:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很适合我的目的,但我很好奇是否有一个经过多次测试和验证的设计模式,我只是重新发明了轮子.

Gor*_*don 9

Silver Bullet意义上没有达成共识.对于已建立的模式,您有多种选择,例如

仅举几例.

您使用哪种方法取决于您,但您应该确保您的系统架构支持模块化.看看这些幻灯片的一些想法