在PHP 7.1中调用以下函数时:
private function dostuff(?int $limit = 999) { }
语法如下:
dostuff(null);
$ limit的值变为null。所以我想可以说$limit
的值明确地设置为null
。有没有办法克服这个问题?即当遇到空值(即缺少值)时,使用默认值,无论是隐式还是显式?
由于
答案 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);