跳到主要内容

PHP 箭头函数

介绍

PHP 7.4 引入了箭头函数(Arrow Functions),这是一种简洁的匿名函数语法。箭头函数特别适合用于需要短小、一次性回调函数的场景。与传统的匿名函数相比,箭头函数更加简洁,且自动捕获父作用域中的变量。

基本语法

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

php
fn (参数列表) => 表达式

箭头函数会自动返回表达式的值,因此不需要显式使用 return 语句。

示例 1: 简单的箭头函数

php
$add = fn($a, $b) => $a + $b;
echo $add(2, 3); // 输出: 5

在这个例子中,$add 是一个箭头函数,它接受两个参数 $a$b,并返回它们的和。

捕获父作用域变量

箭头函数会自动捕获父作用域中的变量,而不需要使用 use 关键字。这使得箭头函数在处理闭包时更加方便。

示例 2: 捕获父作用域变量

php
$factor = 10;
$multiply = fn($num) => $num * $factor;
echo $multiply(5); // 输出: 50

在这个例子中,箭头函数 $multiply 捕获了父作用域中的变量 $factor,并将其用于计算。

与传统匿名函数的比较

传统匿名函数需要使用 use 关键字来捕获父作用域中的变量,而箭头函数则不需要。

示例 3: 传统匿名函数

php
$factor = 10;
$multiply = function($num) use ($factor) {
return $num * $factor;
};
echo $multiply(5); // 输出: 50

相比之下,箭头函数的语法更加简洁。

实际应用场景

箭头函数非常适合用于数组操作,例如 array_maparray_filter 等函数。

示例 4: 使用箭头函数进行数组操作

php
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(fn($n) => $n * $n, $numbers);
print_r($squared); // 输出: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

在这个例子中,箭头函数用于将数组中的每个元素平方。

总结

箭头函数是 PHP 7.4 引入的一个强大特性,它简化了匿名函数的语法,并自动捕获父作用域中的变量。箭头函数特别适合用于短小的回调函数和数组操作。

提示

虽然箭头函数非常方便,但在复杂的逻辑中,传统的匿名函数可能更具可读性。因此,在选择使用箭头函数时,请根据具体情况权衡利弊。

附加资源

练习

  1. 编写一个箭头函数,计算两个数的乘积。
  2. 使用箭头函数和 array_filter 过滤出一个数组中的所有偶数。
  3. 尝试在一个类方法中使用箭头函数,并观察它如何捕获类属性。

通过完成这些练习,你将更好地理解箭头函数的用法和优势。