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');
}
我正在使用这个库: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');
}