PHP-默认函数参数

PHP-默认函数参数,php,function,Php,Function,是否应将空函数参数设置为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) {

是否应将空函数参数设置为
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()
'取决于以下代码是否需要空值


哪个设计更好?为什么?

使用此设计

function test($a = NULL, $b = NULL)
{
    if ($b !== NULL)
    {
        // ... (some awesome code here)
    }

    //.. (more awesome code)
}

test(0);

如果(!empty($b)),
如果($b!=NULL)
如果(!is_NULL($b))
不要使用
,因为
$b=false
$b=0
在这种情况下将失败

使用此

function test($a = NULL, $b = NULL)
{
    if ($b !== NULL)
    {
        // ... (some awesome code here)
    }

    //.. (more awesome code)
}

test(0);

不要使用
如果(!empty($b))
如果($b!=NULL)
如果(!is_NULL($b))
,因为
$b=false
$b=0
在这种情况下将失败

逻辑上,
NULL
值应视为不存在的东西<代码> false 反而具有一些语义值,即使您可以将其视为一个空值。

因此,使用
FALSE
作为是或否的答案,使用
NULL
作为否答案。 如果您的参数是像
$enable\u这样的选项,那么它可以是一个布尔值,您可能需要使用

if ($var)
相反,如果您可以选择将某个内容作为参数传递,那么默认情况下它可以是
NULL
,然后您可以使用

if($var !== null)

仅当您希望将其测试为空值时,才应使用
empty
$var
不能是空字符串、空数组、
“0”或
0

从逻辑上讲,
NULL
值应视为不存在的值<代码> false 反而具有一些语义值,即使您可以将其视为一个空值。

因此,使用
FALSE
作为是或否的答案,使用
NULL
作为否答案。 如果您的参数是像
$enable\u这样的选项,那么它可以是一个布尔值,您可能需要使用

if ($var)
相反,如果您可以选择将某个内容作为参数传递,那么默认情况下它可以是
NULL
,然后您可以使用

if($var !== null)

仅当您希望将其测试为空值时,才应使用
empty
$var
不能是空字符串、空数组、
“0”或
0

您也可以这样做:

function test1($a = FALSE, $b = FALSE) {
  if ($b===false) {
    // ... (process default val-false)
  }else{
    //.. (process supplied value)
  }
}

您也可以这样做:

function test1($a = FALSE, $b = FALSE) {
  if ($b===false) {
    // ... (process default val-false)
  }else{
    //.. (process supplied value)
  }
}

选择3可能是最好的。有不同的功能。但根据提供的信息,很难说这三个案例中哪一个是“更好的设计”。你有3个案例还是只有2个?也就是说,如果“$a==false”和“isset$a==false”,你会做一些不同的事情吗?选项3可能是最好的。有不同的功能。但根据提供的信息,很难说这三个案例中哪一个是“更好的设计”。你有3个案例还是只有2个?也就是说,如果“$a==false”和“isset($a)==false”,你会做一些不同的事情吗?我在这里是为了写这篇文章的,这里也有
is\u null($b)
is\u null($b)。使用
NULL
而不是
FALSE
的Tanx@321zenoSo更适合空的默认函数?!我用更严格的条件语句更新了代码;-)@是的。对于空的默认函数,请使用null而不是false。也要记下你接受的答案,我在这里写的是,还有
is\u null($b)
is\u null($b)。使用
NULL
而不是
FALSE
的Tanx@321zenoSo更适合空的默认函数?!我用更严格的条件语句更新了代码;-)@是的。对于空的默认函数,请使用null而不是false。另外,请记下你已接受的答案。这并不能真正回答问题。但是谢谢你的方法。我想你会建议使用
FALSE
而不是
NULL
作为默认值。是的,我确实喜欢使用FALSE而不是NULL作为默认值,原因很简单-FALSE是一个值,NULL不是。这并不能真正回答问题。但是谢谢你的方法。我想你会建议使用
FALSE
而不是
NULL
。是的,我确实喜欢使用FALSE而不是NULL作为默认值,原因很简单-FALSE是一个值,NULL不是。因此,如果可选参数是
布尔值
,那么它应该是
FALSE/TRUE
,如果它是
整数
字符串
数组
对象
,那么它应该是
NULL
?这取决于您正在执行的操作。在某些情况下,您希望在默认情况下使用
NULL
,即使参数可以是布尔值。将
NULL
用作
这里没有任何内容
。因此,您建议如果可选参数是
布尔值
,那么它应该是
假/真
,如果它是
整数
字符串
数组
,或者
对象
,那么它应该是
,这取决于您在做什么。在某些情况下,您希望在默认情况下使用
NULL
,即使参数可以是布尔值。将
NULL
用作
此处没有任何内容