为空的属性默认值相同,没有默认值?(Is a property default value of n

2019-07-17 17:11发布

并能因此,我放心地重构的所有实例

class Blah
{
    // ...
    private $foo = null;
    // ...
}

class Blah
{
    // ...
    private $foo;
    // ...
}

Answer 1:

答案很简单,是的。 见http://php.net/manual/en/language.types.null.php

特殊的NULL值表示没有值的变量。 NULL是NULL类型唯一可能的值。

您可以轻松地通过试验var_dump()的财产,你会看到这两种情况下这将是NULL

class Blah1
{
    private $foo;

    function test()
    {
        var_dump($this->foo);
    }
}

$test1 = new Blah1();
$test1->test(); // Outputs NULL


class Blah2
{
    private $foo = NULL;

    function test()
    {
        var_dump($this->foo);
    }
}

$test2 = new Blah2();
$test2->test(); // Outputs NULL


Answer 2:

为空的属性默认值相同,没有默认值?

按照文档:

特殊的NULL值表示没有值的变量。

null是尚未设置任何特定值的变量的概念。 这是比较容易区分的时候犯错误null和空1倍的值。

private $foo = null; 完全等同于private $foo; 。 在两种情况下,类属性具有值定义null

isset将返回正确false为双方的声明$foo ; isset是布尔相反is_null ,以及这些值,按照上述, null

作为参考,我建议您查看PHP类型比较表 。

1:在这种情况下,我指的是,对于返回true类型的值empty功能,或以其他方式被认为是“falsey”。 IE null0false ,空阵列( array()和空字符串( '' '0'在技术上也空了,但我觉得这是PHP的一个怪异的语言。



文章来源: Is a property default value of null the same as no default value?