【发布时间】:2018-01-01 09:16:48
【问题描述】:
在 PHP 7.1 中调用以下函数时:
private function doStuff(?int $limit = 999) { }
语法如下:
doStuff(null);
$limit 的值变为null。所以我猜可以说$limit的值被显式设置为null。
有什么办法可以克服吗? IE。当遇到空值(即缺少值)时,使用默认值,无论是隐式还是显式?
【问题讨论】:
-
我认为隐含的意思是在没有参数的情况下调用函数
dostuff(),这将采用默认值,如果你将null值发送给函数,我认为它不会自己取默认值,但你仍然可以在函数内部捕获它并通过代码设置默认值。 -
只需在函数代码的第一行添加
if(is_null($limit)) $limit = 999; -
不要使用参数,而是使用
dostuff();它将使用您在函数参数中设置的默认值 -
你好像想要你的蛋糕却不吃它……?您将参数显式声明为可为空,这意味着您可以将
null作为其值而不是声明的类型或其默认值 传递。这正是发生的事情。 -
是的,SQL 中的
NULL有点在类型系统之外发挥作用。在 PHP 和许多其他语言中,它只是另一种类型/值。
标签: php null default-value php-7.1