在 PHP 7.1 中调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
$limit
的值变为 null
。所以我猜可以说 $limit
的值被显式设置为 null
。
有什么办法可以克服这个问题吗? IE。当遇到空值(即缺少值)时使用默认值,无论是隐式还是显式?
最佳答案
没有 PHP 没有“如果为 null 则回退到默认值”选项。你应该这样做:
private function dostuff(?int $limit = null) {
// pre-int typehinting I would have done is_numeric($limit) ? $limit : 999;
$limit = $limit ?? 999;
}
或者,当您对做某事没有合理的值(value)时,请确保您执行 dostuff()
或 dostuff(999)
。
注意:也有反射获取方法参数的默认值,但这似乎太多了。
但是方法是这样的:
$m = new ReflectionFunction('dostuff');
$default = $m->getParameters()[0]->getDefaultValue();
dostuff($default);
关于php - 当为可空函数参数指定 `null` 时如何使用默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45320353/