所有分类
  • 所有分类
  • 后端开发

PHP7.4 新功能箭头函数:简化匿名函数语法,节省开发时间

最近,我用上了PHP7.4还有更新的功能,特别是函数这块儿,真的帮我省了不少时间。今天就来聊聊我用这些新功能的心得!

箭头函数:简化匿名函数语法

PHP7.4 新功能箭头函数:简化匿名函数语法,节省开发时间

箭头函数这玩意儿实在太棒了!以前写匿名函数那叫一个麻烦,得用`function`关键字,还得自己绑变量。现在好了,有了箭头函数,一切都轻松搞定。比如说,以前我可能要这么写:

php
$numbers=[1,2,3,4,5];
咱们就直接把$squares存成数组,好让每个数都对应上自己的平方。这样的话,不管$n是什么数字,我都能算出它的平方来。
return$n*$n;
},$numbers);

// 旧方法
$func = function($x) {
  return $x + 1;
};
// 箭头函数语法
$func = fn($x) => $x + 1;

而现在,我只需要这样:

把数字都变成平方,就是这样的:$squares=array_map(‘平方’,$numbers);

用上箭头函数,代码简短又明了,读起来也更舒服。每次用它都有种“编程也能这么简单”的感觉。

可变参数列表:灵活处理不定数量参数

然后就是PHP8.0加入了那个变化多端的参数列表功能!这个功能真的非常好用,尤其是当你需要处理那些可能有很多参数的函数时。就像我之前做过的一个项目,我得用一个函数算出一堆数字的平均值,但那时候每次都得自己想办法搞定参数的数量问题。

functionaverage($numbers){

$sum=array_sum($numbers);

function sum(...$numbers) {
  $total = 0;
  foreach ($numbers as $number) {
    $total += $number;
  }
  return $total;
}
$result = sum(1, 2, 3, 4, 5); // 结果为 15

直接算出总数除以数的个数,就这么简单!

}

虽然那样也行得通,可在设定的参数不多时,那就有点儿不那么好用了。现在,我可以这么说:

算数平均值函数average,用这个就能轻松得出一堆数字的平均数。

这样的话,不管我给`average`函数塞几个参数,它都照单全收,这下代码的可塑性跟复用性不就大大提高了吗?

命名参数:提高可读性和错误处理

function greet($name = 'Guest') {
  echo "Hello, $name!";
}
greet(name: 'John'); // 输出 "Hello, John!"

最后,这个命名参数真的让我特别爱!你知道吗,用名字来传参,代码看起来更清晰明了,而且在大项目里,还能避免因搞错参数顺序而出现的bug。

例如,以前我可能需要这样调用一个函数:

直接用$userData[‘name’],$userData[’email’]和$userData[‘password’]创建用户。

如果有参数顺序错误,后果可能很严重。现在,我可以这样写:

创建用户,简单!名字填$userData[‘name’],邮箱填$userData[’email’],密码就填$userData[‘password’]。

就算参数换个位置,这代码还是照样能用,真是让我开发起来省心不少!

这新功能用起来真是太爽了!PHP变得越来越强大,我这个程序员感觉自己在进步。新版本的PHP让代码写得更干净、好看,也少出错,大大提高了我的工作效率。

写完这篇了,想问下大家,用上PHP7.4甚至更高版本的新功能后,感觉怎么样?快来评论区聊聊!别忘了给这篇文章点个赞,让更多人看到~

function extract_query_params(string $url): array {
  $params = [];
  $query = parse_url($url, PHP_URL_QUERY);
  if ($query === null) {
    return $params;
  }
  // 使用可变参数列表获取所有查询参数
  parse_str($query, ...$params);
  // 使用可选参数提供默认值
  $params['page'] ??= 1;
  
  // 使用箭头函数对参数进行验证
  $params = array_filter($params, fn($param) => $param !== '');
  return $params;
}

原文链接:https://www.icz.com/technicalinformation/web3/2024/06/16384.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?