自学内容网 自学内容网

php 箭头函数详解

PHP 的箭头函数(也称为匿名函数或闭包函数)是一种简洁的定义单表达式函数的方法。这种语法是从 PHP 7.4 版本开始引入的,它使得创建简短的一次性使用的函数变得更加方便。

基本语法

箭头函数的基本语法如下:

fn($parameters) => $return_value;

这里 $parameters 是一个或多个参数列表,$return_value 是箭头函数返回的值。

示例

  • 无参数的箭头函数
$greeting = fn() => 'Hello, world!';
echo $greeting();  // 输出: Hello, world!
  • 带参数的箭头函数
$add = fn(int $a, int $b) => $a + $b;
echo $add(5, 3);  // 输出: 8

特性与用法

  • 变量作用域
    • 箭头函数默认捕获外部作用域中的变量,这意味着你可以在箭头函数内部访问外部作用域中的变量。
    • 如果需要修改外部作用域中的变量,可以使用 use 关键字显式声明。
$x = 10;
$increaseX = fn() use (&$x) => $x++;
echo $increaseX();  // 输出: 11
echo $x;            // 输出: 11
  • 类型声明
    • 可以为箭头函数的参数添加类型声明。
    • 同样也可以为返回值添加类型声明。
$square = fn(int $n): int => $n * $n;
echo $square(4);  // 输出: 16
  • 返回对象
    • 如果你想返回一个对象,可以直接在箭头函数中创建并返回。
$createPoint = fn(int $x, int $y): object => (object)['x' => $x, 'y' => $y];
$point = $createPoint(1, 2);
var_dump($point);  // 输出: object(stdClass)#1 (2) { ["x"]=> int(1) ["y"]=> int(2) }
  • 错误处理
    • 箭头函数也可以抛出异常。
$divide = fn(int $a, int $b) => $a / $b ?: throw new Exception('Cannot divide by zero.');
try {
    echo $divide(10, 0);
} catch (Exception $e) {
    echo $e->getMessage();  // 输出: Cannot divide by zero.
}
  • 作为回调函数
    • 箭头函数常被用作回调函数,尤其是在数组操作和事件处理中。
$array = [1, 2, 3, 4, 5];
$result = array_map(fn($value) => $value * 2, $array);
print_r($result);  // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )

原文地址:https://blog.csdn.net/jkzyx123/article/details/140714185

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!