You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP函数命名参数调用问题:Flutter开发者的适配困惑

问题原因与解决方案

问题根源

你写的调用语句 $this->getVar($c=false); 并没有触发PHP的命名参数逻辑:$c=false 会被解析成赋值表达式,表达式的结果是false,最终相当于把false传递给了函数的第一个位置参数$a,完全没有关联到$c参数。

PHP的命名参数语法和Flutter有两点关键区别:

  • 参数名前不需要加$
  • 参数和值之间用:分隔,而非=

正确调用方式

要单独设置最后一个参数$c,直接使用标准的命名参数语法即可:

$this->getVar(c: false);

这样PHP会明确识别你要赋值的是$c参数,$a和$b会自动使用函数定义中的默认值''。

额外补充(可选)

如果需要让$a或$b成为必填参数(类似Flutter的required),可以直接去掉它们的默认值:

public function getVar(String $a, String $b, bool $c = true){
    if($c){
        return $a;
    } else {
        return $b;
    }
}

调用时必须传递$a和$b,可以结合命名参数调整顺序:

$this->getVar(c: false, a: 'inputA', b: 'inputB');

内容的提问来源于stack exchange,提问作者James Hartford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:19:55