Возможно, phpstorm предупреждающая переменная php не была определена

<?php // $smith = ""; $submit ="button_a"; if($submit == "button_a") { $smith = "button_a"; } elseif($submit == "button_b"){ $smith = "button_b"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> <p> <?php echo($smith); ?> </p> </body> </html> 

PHPSTORM предоставляет флаг для каждого файла: Красный – Ошибки, Желтый – Предупреждение, Зеленый – ОК.

PHP над заголовком присваивает значение $ smith. В теле я получаю предупреждение от $ smith, говоря, что он может быть неопределенным. Если я объявляю всю переменную в верхней части кода PHP, ($ smith = "";), она счастлива (без предупреждения).

Есть ли что-то, что я должен делать, чтобы предотвратить эти предупреждения?

Мне не нравится идея добавления комментария к каждому, кто говорит, чтобы не проверять его, и я не хочу их отключать.

Это происходит очень часто, когда я включаю файл db_login.php, который определяет четыре или пять переменных. У меня есть разные файлы db_login.php для WAMP, MAMP и реального шланга.

Есть предположения?

Вы можете сообщить PHPStorm игнорировать отчеты неопределенных переменных, если require on include statement находятся в одном потоке выполнения перед доступом к переменной. Вы найдете его в «Неопределенной переменной» – Игнорировать «include» и «require» . Он включен по умолчанию, поэтому его следует отключить.

введите описание изображения здесь

Примечание. Параметр находится в « File > Settings (Ctrl+Alt+S) > Project Settings > Inspections > PHP > Undefined > Undefined variable

Да, есть две вещи, которые вы можете сделать, чтобы избавиться от этого предупреждения. Что ты сказал:

 $smith = ""; if($submit == "button_a") { $smith = "button_a"; } elseif($submit == "button_b"){ $smith = "button_b"; } 

Или проверьте, установлено ли это при печати:

 <?php if( isset( $smith)) { echo($smith); } ?> 

Однако это всего лишь предупреждение, и вы даете знать, что существует условие, что $smith не будет определен (когда $submit не является "button_a" и не является "button_b" ). Если это условие должно было произойти, вы бы печатали $smith когда он не был установлен, что может быть ошибкой в ​​вашем скрипте.