[英]How to use default value when `null` is given for a nullable function parameter?
在 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.