Система плагинов с событиями или хуками?

Я создал систему плагинов для программного обеспечения в 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,

Это работает довольно хорошо, но, прочитав некоторое время на эту тему, я все еще не уверен, является ли эта техника событие- или hook- система.

Некоторые источники говорят, что разница связана со слабой и плотной связью.
Другие говорят, что хуки имеют возвращаемые значения, а события — нет. А другие снова говорят, что события предназначены для асинхронной активности, и в какой-то момент просто перехватывают код.

Итак, еще раз, приведенный выше код о События или же крючки, а может кто-нибудь объяснить разницу?

1

Решение

Ваш код больше похож на событие.

Крючки разрешить плагину взаимодействовать с кодом, который его вызвал. Они вызываются в предположении, что данные будут возвращены, а исходный код будет обычно проходить по возвращенным данным сразу после вызова ловушки.

События, с другой стороны, вызываются только для объявления о том, когда произошло конкретное действие. Они дают плагинам возможность запускать свою собственную логику обработки событий на этом этапе, без какого-либо прямого влияния на исходный код.

Источник

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]