Php 简明教程
PHP - Arrow Functions
箭头函数在 PHP 7.4 版本中引入。箭头函数为编写匿名函数提供了更简单、更简洁的语法。在 PHP 7.4 中,引进了关键词 " fn " 来定义箭头函数,取代原先通用的关键词 " function "。
fn (argument_list) => expr
-
" ⇒ " 符号后面只允许有一个表达式,其值为箭头函数的返回值。
-
箭头函数没有显式的 return 语句。
-
与匿名函数一样,箭头函数赋值给变量才能被调用。
Example
以下示例展示了如何在 PHP 中使用箭头函数 −
<?php
$add = fn ($a, $b) => $a + $b;
$x = 10;
$y = 20;
echo " x: $x y: $y Addition: " . $add($x, $y);
?>
它将生成以下 output −
x: 10 y: 20 Addition: 30
Using the Arrow Function as a Callback Function
还可以使用箭头函数作为回调函数。回调函数作为其他函数的参数之一来使用。箭头函数会即时执行,而 "⇒" 符号后面的表达式的值会变成父函数的参数,父函数可以是内置函数,也可以是用户定义的函数。
Accessing Variables from the Parent Scope
箭头函数可以自动访问父作用域中的变量。与匿名函数不同,它不需要 " use " 关键词才能作为闭包。当表达式中使用的变量在父函数中定义时,会隐式按值捕获它。
<?php
$maxmarks=300;
$percent=fn ($marks) => $marks*100/$maxmarks;
$m = 250;
echo "Marks = $m Percentage = ". $percent($m);
?>
它将生成以下 output −
Marks = 250 Percentage = 83.333333333333
Example
即使嵌套,箭头函数也可以自动按值捕获变量。
在以下示例中,在另一个箭头函数的表达式中定义了一个箭头函数。
<?php
$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
$x = 5;
$y = 10;
echo "x:$x y:$y \n";
echo "Result of nested arrow functions: " . ($fn($x)($y));
?>
它将生成以下 output −
x:5 y:10
Result of nested arrow functions: 51
与匿名函数一样,箭头函数语法允许任意函数签名,包括参数和返回类型、默认值、变参,以及引用传递和返回。