Шаблон проектирования для реализации подключаемых модулей в приложениях PHP

Есть ли консенсус относительно того, как плагины должны быть реализованы в приложении 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);
        }
    }
}

Это хорошо работает для моих целей, но мне любопытно, есть ли там шаблон проектирования, который был многократно протестирован и доказан, и я просто изобретая колесо.

24
задан ThinkingStiff 23 July 2012 в 08:11
поделиться

3 ответа

Нет консенсуса, как в смысле «Серебряной пули». Для установленных шаблонов у вас есть несколько опций, таких как

и многие другие.

Что вы используете, зависит от вас, но вы должны убедиться, что архитектура вашей системы поддерживает модульность. Посмотрите на эти слайды, чтобы найти некоторые идеи

9
ответ дан 29 November 2019 в 00:25
поделиться

Взгляните на рамки Yii. Yii в значительной степени полагается на события, которые намного чище, чем хуки, действия и т. Д. Используя события, вы можете позволить различным частям системы общаться друг с другом объектно-ориентированным образом.

1
ответ дан 29 November 2019 в 00:25
поделиться

То, как вы это сделали, с помощью хуков - это то, как я это реализую.

Самая большая проблема с вашим образцом в том, что ваша функция создает плагин. Почему бы не передать экземпляр плагина вместо этого?

Как я это сделал, так это то, что плагин сначала создается и сам регистрирует свои хуки.

1
ответ дан 29 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: