当为可空函数参数给出“null”时,如何使用默认值?
2022-08-30 22:04:01
在 PHP 7.1 中,当调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
的值变为 。所以我想可以说的值被显式设置为 。$limit
null
$limit
null
有什么办法可以克服这一点吗?即,当遇到空值(即缺少值)时使用默认值,无论是隐式的还是显式的?
在 PHP 7.1 中,当调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
的值变为 。所以我想可以说的值被显式设置为 。$limit
null
$limit
null
有什么办法可以克服这一点吗?即,当遇到空值(即缺少值)时使用默认值,无论是隐式的还是显式的?
没有 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);