在PHP中阅读有关Anonoymous函数的文档时,我遇到了一些特殊的语法。
此语句在一行中执行匿名函数,但我不明白为什么:
echo (function () {
return 'hi';
})();
我理解该函数返回一个字符串数据类型并回显它,但我不确定匿名函数周围的()分隔符正在做什么。谁能解释一下?
答案 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();
(首先这样做)在得到第一次完成的结果之后执行此操作