PHP 8.0 升级
自 PHP 8.0 起,您想要的解决方案已经可用:命名参数。
function funcName($param1 = 'value1', $param2 = 'value2', $param3 = 'value3') {
...
}
以前,您必须传递一些值作为$param1
,可以是 null 或默认值,但现在只能传递第二个参数。
funcName(param2: 'value');
而且您不必关心参数顺序。
funcName(param2: 'value', param3: 'value');
//is the same as
funcName(param3: 'value', param2: 'value');
此外,我们可以使用命名参数来执行一些花式操作,例如将数组作为参数传递。当我们不知道存储在数组中的确切键时,这非常有帮助,我们不再需要担心变量的顺序了。
$args = [
'param3' => 'value',
'param2' => 'value',
];
funcName(...$args);
//works the same as
funcName(param2: 'value', param3: 'value');
我们甚至不需要将数组中的值命名为参数(当然前提是匹配参数顺序)。
$args = [
'value1',
'param3' => 'value3',
'param2' => 'value2',
];
funcName(...$args);
//works the same as
funcName(param1: 'value1', param3: 'value3', param2: 'value2');
//and
funcName('value1', 'value2', 'value3');
null
默认值不是一个解决办法吗?我只是想知道为什么有人对此提出异议,却没有解释原因就将其评为低分。 - Brad