箭头函数,这个名词应该不会陌生了,因为在很多其他语言里都已经有了,尤其是es6这样的语法中,更是早,而且还有很多其他各种奇技淫巧的语法( ̄▽ ̄)”。
箭头函数也叫短闭包,是一种用php编写的短函数。当向函数中传递闭包时,这个功能是非常有用的,比如使用array_map
,array_wakl
,array_filter
。
在php中写的是这个样子
// Post 对象的集合
$posts = /* … */;
$ids = array_map(fn($post) => $post->id, $posts);
而他以前的写法是这个样子
$ids = array_map(function($post) {
return $post->id;
}, $post);
来总结一下新的函数使用注意事项:
- 1.在
PHP 7.4
里可用 - 2.以
fn
关键字开头 - 3.只能包含
一个
表达式, 即返回表达式 - 4.
return
关键字可忽略 - 5.参数和返回类型均可做类型暗示
根据上面的第5条可以之前的例子可以写成这样
$ids = array_map(fn(Post $post) :int => $post->id, $posts);
两点需要提及
- 还允许使用扩展操作符
- 允许引用,两个参数都可以作为返回值
假如你想使用引用作为返回值,需要写成这样
fn&($x) => $x
简而言之,除了只有一个表达式以外,短闭包和普通闭包的功能是一样的。