PHP7.4的闭包函数简例

本文介绍了PHP7.4引入的短闭包(箭头函数),包括其语法特点,如fn关键字,单表达式,类型暗示,以及与普通闭包的区别。短闭包简化了代码,无需`function`和`return`关键字,但不支持多行表达式。此外,文章讨论了短闭包对外部作用域变量的访问,强调了不能修改外部变量的值,除非使用`$this`关键字。
摘要由CSDN通过智能技术生成

短闭包,也叫做箭头函数,是一种用 php 编写的短函数。当向函数中传递闭包时,这个功能是非常有用的,比如使
用 array_map 或是 array_filter 函数时.
这就是它们看起来的样子
// Post 对象的集合
$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
而以前,你必须这样写:
$ids = array_map(function ($post) {
return $post->id;
}, $posts);
我们来总结一下短闭包函数如何使用.
在 PHP 7.4 里可用
以fn关键字开头
只能包含
一 个 表达式,即返回表达式
return关键字可忽略
参数和返回类型均可做类型暗示
上面示例更严格的类型限定写法可写作:
$ids = array_map(fn(Post $post): int => $post->id, $posts);
有两点需要提及:
还允许使用扩展操作符
允许引用,两个参数都可以作为返回值
假如你想要通过引用的方式返回结果,应该使用以下语法:
fn&($x) => $x
简而言之,除了只允许一个表达式以外,简短的闭包和普通闭包的功能是一样的。
单行:
你应该正确的理解它:短闭包只能有一个表达式。这意味着闭包体中不能有多行。
原因如下:短闭包的目的是为了减少冗余。当然,在任何情况下,fn 都比 function 短。然而,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值