空函数参数应设置为NULL
还是FALSE
?
如下所示:
function test1($a = FALSE, $b = FALSE)
{
if ($b)
{
// ... (some awesome code here)
}
//.. (more awesome code)
}
test1(0);
或
function test2($a = NULL, $b = NULL)
{
if ($b !== NULL)
{
// ... (some awesome code here)
}
//.. (more awesome code)
}
test2(0);
请注意;还需要考虑的事项 - 使用$a === NULL
时。也可以使用' !empty()
'取决于以下代码是否需要空值。
哪种设计更好,为什么?
答案 0 :(得分:2)
使用此
Literal Control Text
不要使用function test($a = NULL, $b = NULL)
{
if ($b !== NULL)
{
// ... (some awesome code here)
}
//.. (more awesome code)
}
test(0);
,if(!empty($b))
和if($b!=NULL)
,因为if(!is_null($b))
&&在这种情况下,$b=false
将失败
答案 1 :(得分:2)
逻辑上,NULL
值应视为不存在的值。 FALSE
具有一些语义值,即使您可以将其视为空值。
因此,使用FALSE
来回答是或否,NULL
作为答案。
如果您的参数是$enable_this
之类的选项,则它可以是布尔值,您可能需要检查它是否为真
if ($var)
相反,如果您可以选择将某些内容作为参数传递,默认情况下它可以是NULL
,然后您可以检查它是否真的存在
if($var !== null)
仅当您要将其测试为空值时,才应使用empty
。 $var
不能是空字符串,空数组,"0"
还是0
?
答案 2 :(得分:0)
你也可以这样做:
function test1($a = FALSE, $b = FALSE) {
if ($b===false) {
// ... (process default val-false)
}else{
//.. (process supplied value)
}
}