PHP8.0新特性之Named Parameters(命名参数)
命名参数,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);
使用命名参数时,可以为指定的参数赋值。
需要注意的是,可选参数一定要在必选参数的后面;必选无法跳过,必须传递参数。
我是温新
请登录后再评论