И могу ли я, таким образом, безопасно реорганизовать все экземпляры
class Blah
{
// ...
private $foo = null;
// ...
}
к
class Blah
{
// ...
private $foo;
// ...
}
?
И могу ли я, таким образом, безопасно реорганизовать все экземпляры
class Blah
{
// ...
private $foo = null;
// ...
}
к
class Blah
{
// ...
private $foo;
// ...
}
?
Простой ответ, да. См. 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
Является ли значение по умолчанию значением 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 как языка.