我可以立即评估匿名函数吗?

时间:2012-01-31 20:44:46

标签: php anonymous-function lambda

  

可能重复:
  Immediately executing anonymous functions

我想立即评估一个匿名函数,而不是它在方法args中作为Closure对象出现。这可能吗?

例如:

$obj = MyClass;
$obj->Foo(function(){return "bar";}); // passes a Closure into Foo()
$obj->Foo(function(){return "bar";}()); // passes the string "bar" into Foo()?

第3行是非法语法 - 有没有办法做到这一点?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用call_user_func执行此操作...虽然可能有点愚蠢但您可以将其分配给变量并随后调用变量。

call_user_func(function(){ echo "bar"; });

您可能认为PHP 5.4具有解除引用功能可以实现这一点。但是你错了(无论如何,RC6)。