PHP闭包需要传递参数

Dan*_*ill 0 php closures

试图找出为什么php匿名函数只有在函数头中给出参数时才有效.

例如

$f = function(){
    echo "hello world";
};
$f;
$f();
Run Code Online (Sandbox Code Playgroud)

不行.但

$f = function($argument){
    echo $argument;
}
$f('hello world');
Run Code Online (Sandbox Code Playgroud)

工作得很好.

为什么它需要参数,是否有任何解决方法?

编辑

这必须是版本问题.我在5.3.18,我的第一个例子肯定不起作用.对于那些不相信的人,它会抛出:

Parse error: syntax error, unexpected T_FUNCTION in index.php(192) : 
  eval()'d code on line 1
Run Code Online (Sandbox Code Playgroud)

编辑

在看了DaveRandom的回答后,我又回到了不知道发生了什么.那就是如果它们是正确的,它在5.3.10中有效......

nic*_*ckb 5

这是完全有效的语法和输出hello world:

$f = function(){
    echo "hello world";
};
$f();
Run Code Online (Sandbox Code Playgroud)

该行$f;没有任何作用,相当于声明任何其他变量,然后写入新的变量名称和分号.

匿名函数不需要参数,有关它们的更多详细信息,请参阅手册.

您正在获得这些语法错误,因为您运行的是PHP版本<5.3.