如何在PHP中使用匿名函数

如何在PHP中使用匿名函数,php,Php,在阅读了有关PHP中异常函数的文档后,我遇到了一些语法方面的特殊问题 此语句在一行中执行匿名函数,但我不明白为什么: echo (function () { return 'hi'; })(); 我知道该函数正在返回一个字符串数据类型并回显它,但我不确定匿名函数周围的()delmiter在做什么。有人能解释一下吗?这是一种立即定义和调用函数的方法。但这仅由PHP7+支持 PHP5.3+的替代方案是 call_user_func(function() { echo "Hi";

在阅读了有关PHP中异常函数的文档后,我遇到了一些语法方面的特殊问题

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

echo (function () {
     return 'hi';
})();
我知道该函数正在返回一个字符串数据类型并回显它,但我不确定匿名函数周围的()delmiter在做什么。有人能解释一下吗?

这是一种立即定义和调用函数的方法。但这仅由PHP7+支持

PHP5.3+的替代方案是

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

因此,如果您想动态地定义一个函数,可以说,并立即使用它-这是一种方法。

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

$example = array(1,2,3);
(function () use ($example) { return $example[0] -1; })();
()分隔符的用法与数学中的BODMAS类似,(4*2)+2等于10。在执行闭包之前告诉编译器要设置闭包

长版本将是

$closure = function () { ....
$closure();
这适用于类实例和其他变体,如:

(new Object)->method();

(首先执行此操作)在获得首先执行的操作的结果后执行此操作,以便匿名函数可以是多行?@Phoenix这是什么意思?我不理解你,匿名函数就像函数的字面意思。当一个int文本创建一个int值时,一个匿名函数创建一个函数对象,而不给它指定一个名称。我可能没有说清楚:我在谈论这种类似javascript的语法。请随意编辑我的答案,因为我的英语水平很差。与其添加新答案,不如注意根据匿名函数生成一个闭包对象,使其类似于
(新对象)()
。凌晨12点56分,我说不出这么精彩的话,但我会用你的方式来回答未来的问题@JonStirlingInteresting answer!!!关于这段代码,你还能说些什么:
echo“start”。真的吗?“如果”:“否则”,“结束”///当我可以下一次编写此代码时,输出“if”
echo“start”。(true?“if”:“else”)“end”///输出“startifend”
need in explanation如果将start作为字符串输出,则将围绕一个真正的布尔值运行一个三元表达式,该布尔值将始终在后面返回什么?最后将一个结束字符串连接到它。第一行中途失败,因为您错过了表达式true周围的()分隔符@MaximPro@KyleThomas那么为什么我没有得到通知、警告或致命错误?