在 php 8 中,调用函数时写 参数名: 值,即可只传需要覆盖的可选参数。省略的可选参数继续使用定义中的默认值,必填参数仍需提供。
跳过中间的可选参数
保存为 named-demo.php 并执行 php named-demo.php。示例保留默认缩进,只关闭结尾换行。
<?php function label(string $text, int $indent = 2, bool $newline = true): string
{
return str_repeat(' ', $indent) . $text . ($newline ? PHP_EOL : '');
}
var_export(label('库存', newline: false));

预期得到带两个前导空格的「库存」,字符串末尾没有换行。参数名使用函数声明里的 newline。
同时指定多个参数时看名称
纯命名调用可以改变书写顺序。混合调用时,位置参数必须先写。
echo label(newline: true, text: '库存', indent: 0);
echo label('库存', indent: 4);

第一行没有前导空格,第二行有四个。写成 label(text: 某个值, 4) 会因为命名参数后又出现位置参数而失败。
参数名拼错时怎么定位
在单独的测试文件或追加到演示脚本中运行这段代码,核对错误来自哪个名称。
try {
label('库存', newLine: false);
} catch (Error $error) {
echo $error->getMessage(), PHP_EOL;
}
PHP 会报告 Unknown named parameter。库函数改名也可能影响已有的命名调用,升级时应核对实际函数签名。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











