Существует множество вариантов реализации системы плагинов. 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_
}
Теперь от типа ловушки / действия зависит, какие параметры присутствуют, и ожидается ли какой-либо текст результата. Существуют также различия в передаче параметров (например, для некоторых обратных вызовов требуются ссылки & $ var). И некоторые системы плагинов вместо этого полагаются на объекты (если существует не так много различных типов действий или нужно работать с более сложными структурами).