PHP8.0尝鲜系列(二):命名参数的使用

在以往PHP版本中,如果函数或方法中含有多个可选参数,在调用时,我们需要将要传入的可选参数前面的所有可选参数进行赋值,这样其实对于参数传递非常不方便。因此,PHP8.0引入了命名参数(named_params)的概念。

命名参数定义

先看看官方对命名参数的定义(中文google翻译,不理解的看英文原文理解吧)PHP: rfc:named_params

Named arguments allow passing arguments to a function based on the parameter name, rather than the parameter position. This makes the meaning of the argument self-documenting, makes the arguments order-independent, and allows skipping default values arbitrarily.

命名参数允许基于参数名称(而不是参数位置)将参数传递给函数。 这使得自变量的含义可以自动记录,使自变量与顺序无关,并允许任意跳过默认值。

 

使用命名参数

说在前面

  • 可选参数和必需参数:本篇在定义的方法和函数中使用这两种名称
  • 位置参数和命名参数:本篇在方法和函数调用时使用这两种名称
  • 命名参数使用过程中最好将可选参数放在必需参数后面,否则容易产生错误,具体参考本篇最后一节【关于参数顺序问题】

函数中使用命名参数

function named_params($a, $b, $c = 0, $d = 0) {
     echo $a."-".$b."-".$c."-".$d;
}
echo "function: ";
named_params(1, 2, c:3);

// result:function: 1-2-3-0

 

对象方法中使用命名参数

class NamedParams {
     public function index($a, $b = 0, $c = 0) {
         echo $a."-".$b."-".$c;
     }
}
echo "class: ";
(new NamedParams)->index(1, c:3);

// result:class: 1-0-3

以上两种在使用上差别不大,分开讲方便理解。

 

关于参数顺序问题

定义一个可选参数和必需参数位置交叉的函数

function named_params($a, $b = 0, $c, $d = 0) {
    echo $a."-".$b."-".$c."-".$d;
}

 

#1 位置参数和命名参数交叉使用

# 1
echo "function: ";
named_params(1, b:2, 3);

运行后:PHP首先会报不推荐将必需参数放在可选参数后面;然后程序报错:不能将位置参数放在命名参数后面。

 

#2 改变必选参数位置传递

# 2
echo "function: ";
named_params(1, 2, b:3);

运行后:PHP首先会报不推荐将必需参数放在可选参数后面;然后程序报错:命名参数覆盖了之前的参数,也就是在这里2和3都会被认为是$b的参数。

 

#3 直接使用位置参数传递

# 3
echo "function: ";
named_params(1, 2, 3, 4);

运行后:PHP首先会报不推荐将必需参数放在可选参数后面;然后正常返回结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值