php 箭头函数详解

avatar
作者
猴君
阅读量:0

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 )

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!