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');