Подтвердить что ты не робот

Является ли значение по умолчанию значением null равным нулю по умолчанию?

И могу ли я, таким образом, безопасно реорганизовать все экземпляры

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

к

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

?

4b9b3361

Ответ 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

Ответ 2

Является ли значение по умолчанию значением null равным нулю по умолчанию?

Да

в соответствии с документами:

Специальное значение NULL представляет переменную без значения.

NULL - это понятие переменной, которая не была задана никаким конкретным значением. Ошибочно ошибаться при дифференциации значений NULL и пустых 1.

private $foo = null; в точности эквивалентен private $foo;. В обоих случаях атрибут класса определяется со значением NULL.

isset будет правильно возвращать false для обеих объявлений $foo; isset является булевым, противоположным is_null, и эти значения, как указано выше, NULL.

Для справки рекомендую просмотреть таблицы сравнения типов PHP.

1: В этом случае я имею в виду типизированные значения, которые возвращают true для функции empty или которые иначе считаются "ложными". И.Е. NULL, 0, false, пустой массив (array()) и пустая строка (''). '0' также технически пуст, хотя я считаю, что это странность PHP как языка.