PHP8.0新特性之Named Parameters(命名参数)

作者: 温新

分类: 【PHP基础】

阅读: 2827

时间: 2022-01-23 14:12:13

命名参数,PHP8.0允许在函数/方法调用中使用命名参数。

简单地说,就是可以在调用函数或方法传递参数时,可以给参数取一个与函数参数或方法一样的名字。

位置参数

先来看看PHP8.0之前,使用位置参数的案例

function say($name, $age) {
	echo $name, $age;
}


say('王五', 12);	// 王五12
say(12, '李四'); // 12李四

使用位置参数,得到的是完全不一样的结果,有了命名参数后,调用函数或方法时,位置就可以随意放置了。

命名参数案例

自定义函数

function say(string $name, int $age) {
	echo $name, $age;
}

// 结果都是 李四19
say(name:'李四', age:19);
say(age:19, name:'李四');

需要注意的是,调用时传递参数的名字需要和方法定义时的名字一致。

内置函数

// 默认位置
$res1 = str_contains('php是世界上最好语言', 'php');
// 使用命名参数后,位置可以发生变化
$res2 = str_contains(haystack:'php是世界上最好语言', needle:'php');
$res3 = str_contains(needle:'php', haystack:'php是世界上最好语言');

// 输出结果都是 true

PHP8.0以后的新函数支持命名参数;小于8的版本,绝大多数函数不支持命名参数,也就是说,命名参数不向前兼容。

参数跳过

function say(string $name, int $age = 18, $sex = 1) {
	echo $name, $age, $sex;
}

// 全部都传递参数
say(name:'李四', age:19, sex:2);
// 修改性别,使用命令参数跳过age参数
say(name:'王美丽', sex:2);

使用命名参数时,可以为指定的参数赋值。

需要注意的是,可选参数一定要在必选参数的后面;必选无法跳过,必须传递参数。

我是温新

请登录后再评论