如何在PHP中使用匿名函数

时间:2016-10-03 23:08:06

标签: php

在PHP中阅读有关Anonoymous函数的文档时,我遇到了一些特殊的语法。

此语句在一行中执行匿名函数,但我不明白为什么:

echo (function () {
     return 'hi';
})();

我理解该函数返回一个字符串数据类型并回显它,但我不确定匿名函数周围的()分隔符正在做什么。谁能解释一下?

2 个答案:

答案 0 :(得分:2)

这是立即定义和调用函数的方法。这只是PHP7 +支持。

PHP5.3 +的替代方案是

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

所以,如果你想在运行中定义一个函数,可以这么说,并立即使用它 - 这就是你要走的路。

答案 1 :(得分:1)

不是直接将值传递给方法,而是可以创建匿名函数。

$example = array(1,2,3);
(function () use ($example) { return $example[0] -1; })();

()分隔符在数学中像BODMAS一样使用,其中(4 * 2)+ 2为10.你告诉编译器你想在执行它之前设置闭包。

长版将是

$closure = function () { ....
$closure();

这适用于类实例和其他变体,例如:

(new Object)->method();

(首先这样做)在得到第一次完成的结果之后执行此操作