Как работает система плагинов (wordpress, mybb …)?

Мне интересно, как работают плагины, я просто знаю, что вместо изменения кода мы используем плагины, но как они выполняют свою работу без изменения кода? и что должен кодер учитывать при кодировании нового проекта, чтобы он мог иметь плагины? и большое спасибо: D

Существует несколько вариантов того, как реализовать систему плагинов. WordPress использует довольно распространенную схему, часто описываемую как «крючки». Я не знаю точную реализацию, но она в основном работает следующим образом:

// plugin.php script registers its own callback function register_plugin("hook_type", "plugin_function_123"); function plugin_function_123($params) { ... } 

Где hook_type часто является именем действия или чем-то еще. И когда основное приложение проходит через определенную точку (или, например, требует обработки некоторых данных), она вызывает все зарегистрированные функции обратного вызова:

 $output = call_plugins("hook_type", $param1, $param2); 

Это часто реализуется за кулисами как простой цикл:

 foreach ($registered_plugins[$action] as $func) { $func($param1, $param2, ...); // or call_user_func_ } 

Теперь это зависит от типа hook / action, какие параметры присутствуют, и если ожидается какой-либо результат. Существуют также различия в передаче параметров (например, для некоторых обратных вызовов требуются ссылки & $ var). И некоторые плагиновые системы вместо этого полагаются на объекты (если не так много разных типов действий, или с ними нужно работать с более сложными структурами).