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
相关产品推荐
相关产品推荐

