php 箭头函数详解
创始人
2024-12-16 14:09:35
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 )

相关内容

热门资讯

二分钟揭秘!凡乐湖北麻将改牌器... 二分钟揭秘!凡乐湖北麻将改牌器,阳光岛牌乐汇辅助好像真的是有挂,细节揭秘(有挂方法);1、用户打开应...
科技新动态!欢喜麻将app如何... 科技新动态!欢喜麻将app如何提高胜率(真是有挂)详细透视教程在进入欢喜麻将app如何提高胜率辅助挂...
2分钟黑科技!赣南好友斗牛外 ... 2分钟黑科技!赣南好友斗牛外 挂,心悦云南麻将有挂吗(原来真的有挂);1、玩家可以在心悦云南麻将有挂...
玩家必看科普!!牵手跑得快有没... 您好,牵手跑得快有没有外挂这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩...
十分钟辅助!微友麻将,雀神广东... 十分钟辅助!微友麻将,雀神广东麻将果然是真的有挂,可靠教程(有挂细节)1、微友麻将系统规律教程、微友...
科技分享!吉祥麻将填大坑插件(... 科技分享!吉祥麻将填大坑插件(切实真的是有挂)详细辅助教程1、吉祥麻将填大坑插件ai辅助优化,吉祥麻...
五分钟插件!掌中乐游戏有挂吗,... 五分钟插件!掌中乐游戏有挂吗,博雅红河棋牌有没有(都是存在有挂);1.博雅红河棋牌有没有 ai辅助创...
总算了解!!渝都麻将有挂吗(透... 总算了解!!渝都麻将有挂吗(透视)透视脚本辅助挂(2025已更新)(哔哩哔哩);在进入渝都麻将有挂吗...
两分钟了解!新蜜瓜拼三张辅助,... 两分钟了解!新蜜瓜拼三张辅助,吉祥填大坑开发软件总是真的是有挂,扑克教程(有挂透明)所有人都在同一条...
教程辅助!微信里的边锋跑得快有... 教程辅助!微信里的边锋跑得快有挂吗(一直存在有挂)详细辅助教程1、每一步都需要思考,不同水平的挑战会...