我想将函数(不是结果)作为另一个函数的参数传递。假设我有
function double_fn($fn)
我希望两次运行给定函数($ fn)。 PHP中有这样的机制吗?我知道你在python函数中是一种变量但是PHP类似吗?
@edit 是否有类似的方法来使用方法?
function double_fn(parrot::sing())
答案 0 :(得分:3)
它......有点不同。将函数名称作为字符串传递。
function foo()
{
echo "foobar\n";
}
function double_fn($fn)
{
$fn();
$fn();
}
double_fn('foo');
答案 1 :(得分:2)
从5.3 (注释)开始,你可以很自然地使用闭包:
function double_fn(callable $fn)
{
$fn();
$fn();
}
double_fn(function() {
echo "hi";
});
(注释)仅在5.4
之后输入提示callable类型可以是一些东西:
手册中解释了上述示例。
编辑是否有类似的方法来使用方法?
function double_fn(parrot::sing())
这样做会将parrot::sing()
的结果传递给函数;通过"参考"对于静态方法,您需要使用:
double_fn('parrot::sing');
double_fn(['parrot', 'sing']);
答案 2 :(得分:1)
您可以使用PHP 5.3.0中引入的anonymous functions:
function double_fn($fn) {
$fn();
}
double_fn(function(){
// fonction body
});
或:
$myFn = function(){
// fonction body
};
double_fn($myFn);