当为可空函数参数给出“null”时,如何使用默认值?

2022-08-30 22:04:01

在 PHP 7.1 中,当调用以下函数时:

private function doStuff(?int $limit = 999) { }

语法如下:

doStuff(null);

的值变为 。所以我想可以说的值被显式设置为 。$limitnull$limitnull

有什么办法可以克服这一点吗?即,当遇到空值(即缺少值)时使用默认值,无论是隐式的还是显式的?


答案 1

没有 PHP 没有“如果为 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);

答案 2

推荐