Нет.В PHP вы можете знать, что переменная не существует, когда вы пытаетесь получить к ней доступ.
Обратите внимание:
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
var_dump($line);
Вы должны реструктурировать свой код так, чтобы все пути кода велик определенной переменной, например:
$line = "default value";
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
var_dump($line);
Если значение по умолчанию отсутствует, это все же лучше, чем isset
, потому что вы будете предупреждены, если у вас есть опечатка в имени переменной вокончательный if
:
$line = null;
if ($data = file('my_file.txt')) {
if (count($data) >= 0)
$line = reset($data);
}
if ($line !== null) { /* ... */ }
Конечно, вы можете использовать isset
1 , чтобы проверить, существует ли в данной точке переменная.Однако, если ваш код опирается на это, он, вероятно, плохо структурирован.Я хочу сказать, что в отличие от, например, C / Java, вы не можете во время компиляции определить, является ли доступ к переменной допустимым.Это усугубляется отсутствием области видимости блока в PHP.
1 Строго говоря, isset
не скажет вам, установлена ли переменная, скажет, установлена ли она и есть линенулевой.В противном случае вам понадобится get_defined_vars
.