PHP 7.1 Nullable默认函数参数

时间:2017-07-26 07:34:41

标签: php php-7.1

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

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

语法如下:

dostuff(null);

$ limit的值变为null。所以我想可以说$limit的值明确地设置为null。有没有办法克服这个问题?即当遇到空值(即缺少值)时,使用默认值,无论是隐式还是显式?

由于

1 个答案:

答案 0 :(得分:14)

没有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);