How does plugin system work (wordpress, mybb …)?

前端 未结 1 1553

I\'m curious how plugins work, I just know that instead of changing the code we use plugins, but how do they do their job without changing the code ? and what should a code

1条回答
  •  失恋的感觉
    2020-12-02 15:27

    There are multiple variations on how to implement a plugin system. Wordpress uses a quite common scheme often described as "hooks." I don't know the exact implementation but it basically works like this:

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

    Where the hook_type is often an action name or something. And when the main application runs through a specific point (or e.g. needs some data processsed) it invokes all registered callback functions:

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

    This is often implemented behind the scenes as a simple loop:

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

    Now it depends on the hook/action type what parameters are present, and if any result text is expected. There are also differences in parameter passing (e.g. some callbacks require &$var references). And some plugin systems rely on objects instead (if not as many varying action types exist or more complex structures are to be worked with).

    0 讨论(0)
提交回复
热议问题