将匿名函数传递给多个函数

时间:2018-06-04 10:26:41

标签: php

我有一个函数,我希望将其作为参数传递给多个函数。有没有办法使用匿名函数,在一行'。

这是没有匿名函数的样子:

function my_function( $input ) {
    return $input;
}

add_filter( 'filter_one', 'my_function' );
add_filter( 'filter_two', 'my_function' );

以下是使用匿名设置调用add_filter一次的内容:

add_filter( 'filter_one', function ( $input ) {
        return $input;
});

PHP中是否存在语法为filter_two执行相同操作而不重写参数的函数?

1 个答案:

答案 0 :(得分:3)

虽然经常将内联定义为某个函数的参数,但是anoymous函数只是一个可以像任何其他函数一样使用的值。 (确切地说,它是a Closure object。)

因此,您可以将回调分配给变量,并将该变量传递到您喜欢的任何位置:

$noop = function ( $input ) {
        return $input;
};
add_filter( 'filter_one', $noop );
add_filter( 'filter_two', $noop );