<?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>
Run Code Online (Sandbox Code Playgroud)
PHPSTORM为每个文件提供一个标志:红色 - 错误,黄色 - 警告,绿色 - 确定.
标题上方的PHP将为$ smith分配一个值.在身体里,我得到了一个关于$史密斯的警告说它可能是未定义的.如果我在PHP代码的顶部声明所有变量,($ smith ="";)它很高兴(没有警告).
我应该采取哪些措施来防止这些警告?
我不喜欢将评论附加到每个人说不检查它的想法,我不想把它们全部关闭.
当我包含定义四个或五个变量的db_login.php文件时,会发生很多这种情况.我为WAMP,MAMP和真正的软管提供了不同的db_login.php文件.
有什么想法吗?
Dre*_*een 15
如果require on include语句位于变量访问之前的同一执行流中,则可以告诉PHPStorm忽略未定义的变量报告.你会在'Undefined variable'中找到它- 忽略'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";
}
Run Code Online (Sandbox Code Playgroud)
或者在打印时检查它是否已设置:
<?php
if( isset( $smith)) {
echo($smith);
}
?>
Run Code Online (Sandbox Code Playgroud)
但是,这只是一个警告,它让你知道有一个$smith不会被定义的条件(何时$submit不是"button_a"和不是"button_b").如果发生这种情况,您将在$smith未设置时进行打印,这可能是您脚本中的错误.