PHP-挂钩:多个挂钩的结果不同

PHP-Hooks: Different result on multiple hooks

我正在使用这个库:https://github.com/bainternet/PHP-Hooks 并寻求是否有人熟悉这个库来解决我的问题。

这是我的代码:

if (!function_exists('app_hooks')) {

    function app_hooks() {
        require_once("php-hooks.php");
        global $hooks;
        return $hooks;
    }

}

app_hooks()->add_filter('my_filter', function ($value) {
    echo $value; //output: some value to be passed
    return "x";
});
app_hooks()->add_filter('my_filter', function ($value) {
    echo $value; //output: xy (but should be 'some value to be passed')
    return "y";
});

$my_tabs = array();
$my_tabs[] = app_hooks()->apply_filters('my_filter', 'some value to be passed');

echo "<pre>";
print_r($my_tabs);
exit;

$my_tabs 给出了这个输出:

Array
(
    [0] => y
)

但我需要这样的两个值:

Array
(
    [0] => x,
    [1] => y
)

任何人都可以告诉我我哪里错了,或者如果可能的话。 提前致谢。

应用单个挂钩只会将一个值压入数组。您需要推入一个循环来获取多个值,因此我建议为您的挂钩指定不同的名称。

app_hooks()->add_filter('my_filter1', function ($value) {
    echo $value; //output: some value to be passed
    return "x";
});
app_hooks()->add_filter('my_filter2', function ($value) {
    echo $value; //output: xy (but should be 'some value to be passed')
    return "y";
});
$filters = ['my_filter1', 'my_filter2'];
foreach ($filters as $f) {
    $my_tabs[] = app_hooks()->apply_filters($f, 'some value to be passed');
}