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

标签 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 中有没有一种方法可以调用另一个函数返回的函数而不使用临时变量,或者至少在一个相同的语句中?

最佳答案

正如在 php repo 中看到的那样,@NikiC 正在积极致力于实现 his RFC , ()() 语法已经在主干中:

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

我不知道发布 map 是什么样的,希望我们能尽快在 php 中获得合适的语法。

关于php - 我们可以调用匿名函数而不将其存储在 PHP 的变量中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510992/

相关文章:

php - 使用 LIMIT 和 UNION 选择查询 - 性能问题

php - 选择架构

matlab - 将函数句柄的单元格数组转换为函数句柄的单个数组

functional-programming - 不同的编程语言如何使用闭包?

javascript - 允许 JavaScript 闭包从父级作用域继承变量

php - 仅检索 RedBean 中的某些字段

php - 添加 Magento 系统 URL 重写

php - 清除 session 表中持久日志中的行?

javascript变量范围: returning variables from nested functions?

JavaScript 和 jQuery,匿名函数内的 "this"