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

标签 php oop design-patterns plugins observer-pattern

对于如何在 PHP 应用程序中实现插件是否有共识?

我查看了 observer pattern接近了,它实际上只是一个通知系统,不允许代码直接扩展应用程序。我目前正在使用我想出的一个简单的钩子(Hook)系统:

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);
        }
    }
}

这对我的目的很有效,但我很好奇是否有一种设计模式已经过多次测试和证明,而我只是在重新发明轮子。

最佳答案

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

仅举几例。

你使用哪个取决于你,但你应该确保你的系统架构支持模块化。查看这些幻灯片以获取一些想法

关于php - 在 PHP 应用程序中实现插件的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244313/

相关文章:

php - 从类 php oop 返回值

java - 如何设计接口(interface)以方便 Java 测试?

php - 以不同的顺序从表中获取行

php - 我有点困惑,PHP 说 $results 是 mysqli 类的非对象

javascript - 实例化的 JavaScript 对象如何相互通信?

C++:编译未使用的类

java - Java 类的版本特定实现的模式

php - 如何使类似 SQL 的条件搜索仅显示一组特定的行

php - Where 条件不适用于 IN 子句

Java在Main类中调用方法