php命名参数,3-1 php8的命名参数

**一.参数类型**

1.位置参数

```

str_contains('FooBar', 'Foo');

```

2.命名参数

```

str_contains(haystack: 'FooBar', needle: 'Foo');

```

**二.命名参数定义**

```

#声明$中的参数名称不带符号将是参数名称,或函数形参的名字取$后变为实参的命名参数.

#格式:name:'user1'或name:$name

function show($name,$age){

echo "$name,$age";

}

show(name:'user1',age:'123');

```

**三.支持命名参数兼容程度**

1.新函数

```

function str_contains(string $haystack, string needle): bool {}

$b=str_contains(needle:'php8',haystack:'my name is php8',);

var_dump($b);

```

2.自定义函数

```

function show($name,$age){

echo "$name,$age";

}

```

3.大部分不向后兼容

```

echo substr(string:'my name is php8',start:3,length:4);

```

**四.传参顺序**

```

#命名参数可不按参数顺序传递

show(name:$name,age:$age);

show(age:$age,name:$name);

```

**五.可选参数和默认值**

```

#当函数或方法用默认值声明参数时,并且如果命名参数调用站点没有为该参数设置值,则将使用默认值,就像位置参数调用一样.

function show($name,$age=20){

echo "$name,$age";

}

show('user1');

show(name:'user1');

```

**六.跳过参数**

```

#如果未在调用站点上明确设置,则命名参数将继承默认值。这样就可以跳过函数/方法调用的可选参数,这对于位置参数如果没有默认值就无法实现。

function show($name,$age=20,$sex='nan'){

echo "$name,$age,$nan";

}

show(name:'user1',sex:'nv');

#扩展实例

try{

show(sex:'nv');

}catch(ArgumentCountError){

echo 'sex nv error';

}

```

**七.覆盖参数**

```

#不允许覆盖之前设置的参数:

function show($name,$age){

echo "$name,$age";

}

show(name:'user1',age:25,name:'user2');

```

**八.混合命名和位置参数**

```

#可以在同一调用中使用命名参数和位置参数,位置参数必须在命名参数前面。

function show($name,$age){

echo "$name,$age";

}

show(name:'user1',25);

```

**九.带有继承链的命名参数**

```

#PHP的命名参数功能允许重命名参数名称。

class Person{

public function show($name){

echo $name;

}

}

class User extends Person{

public function show($age){

echo $age;

}

}

$obj=new User();

$obj->show(age:25);

```

**十.func_get_arg函数**

```

#注意参数顺序

function show($name, $age){

echo func_get_arg(0);

}

show(age:25,name:'user1');

```

**十一.可变参数的命名参数**

```

#可变参数可以收集未分配给先前参数(如果有)的参数,并且其名称将被保留。

function show($a, $b, ...$args) {

print_r($args);

}

show(1,2,name:'user1',age:25,sex:'nv');

show(1,2,80,name:'user1',age:25,sex:'nan');

```

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值