我们可以调用匿名函数而不将其存储在PHP中的变量中吗?

时间:2014-08-26 16:43:18

标签: php anonymous-function

在Javascript中,在一个语句中调用另一个函数返回的函数很容易。考虑例如:

function createOperation(operator)
{
    return Function("a", "b", "return a " + operator + "b;")
}

var result = createOperation("*")(2, 3);

这里,我们调用一个函数来创建另一个函数,该函数将两个值相乘,然后用两个参数调用这个新函数。

如果我尝试在PHP中复制类似的代码片段,我最终会使用两个语句和一个额外的变量:

function createOperation(operator)
{
    return create_function('$a,$b', 'return $a '.$operator.' $b;');
}

$temp_var = createOperation("+");
$result = $temp_var(2, 3);

简短的,类似Javascript的表单不起作用:

$result = createOperation("+")(2, 3);

在编写调用链(伪代码)时,这一点特别繁琐:

foo(arg1)(arg2, arg3)()(...)

哪个会成为:

$temp1 = foo($arg1);
$temp2 = $temp1($arg2, $arg3);
$temp3 = $temp2();
...

所以我的问题是:PHP中是否有一种方法可以在不使用临时变量的情况下调用另一个函数返回的函数,或者至少在一个相同的语句中?

1 个答案:

答案 0 :(得分:1)

如在php repo中所见,@ NikiC正积极致力于实现his RFC()()语法已经在主干中:

https://github.com/php/php-src/commit/64e4c9eff16b082f87e94fc02ec620b85124197d

我不知道发布地图的样子,希望我们很快就能在php中获得不错的语法。