当为可为空的函数参数提供“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);