当为可为空的函数参数提供“null”时如何使用默认值?
How to use default value when `null` is given for a nullable function parameter?
在PHP7.1中调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
$limit
的值变为 null
。所以我猜可以说 $limit
的值被显式设置为 null
.
有什么办法可以克服这个问题吗? IE。当遇到空值(即缺少值)时使用默认值,无论是隐式还是显式?
否 PHP 没有 "fallback to default if null" 选项。你应该改为:
private function dostuff(?int $limit = null) {
// pre-int typehinting I would have done is_numeric($limit) ? $limit : 999;
$limit = $limit ?? 999;
}
或者,当您对做事没有合理的价值时,请确保您执行 dostuff()
或 dostuff(999)
。
注意: 也有反射获取方法参数的默认值,但是好像有点过分了
但是方法如下:
$m = new ReflectionFunction('dostuff');
$default = $m->getParameters()[0]->getDefaultValue();
dostuff($default);
在PHP7.1中调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
$limit
的值变为 null
。所以我猜可以说 $limit
的值被显式设置为 null
.
有什么办法可以克服这个问题吗? IE。当遇到空值(即缺少值)时使用默认值,无论是隐式还是显式?
否 PHP 没有 "fallback to default if null" 选项。你应该改为:
private function dostuff(?int $limit = null) {
// pre-int typehinting I would have done is_numeric($limit) ? $limit : 999;
$limit = $limit ?? 999;
}
或者,当您对做事没有合理的价值时,请确保您执行 dostuff()
或 dostuff(999)
。
注意: 也有反射获取方法参数的默认值,但是好像有点过分了
但是方法如下:
$m = new ReflectionFunction('dostuff');
$default = $m->getParameters()[0]->getDefaultValue();
dostuff($default);