<?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分配一个值。在身体里,我得到了一个关于$史密斯的警告说它可能是未定义的。如果我在PHP代码的顶部声明所有变量,($ smith =“”;)它很高兴(没有警告)。
我是否应该采取措施防止这些警告?
我不喜欢将评论附加到每个人说不检查它的想法,我不想把它们全部关掉。
当我包含定义四个或五个变量的db_login.php文件时,会发生很多这种情况。我为WAMP,MAMP和真正的软管提供了不同的db_login.php文件。
有什么想法吗?
答案 0 :(得分:15)
如果在变量访问之前,require on include语句位于同一个执行流程中,您可以告诉PHPStorm忽略未定义的变量报告。你会在'Undefined variable'中找到它 - 忽略'include'和'require'语句。它默认启用,因此您应该禁用它。
注意:该设置位于File > Settings (Ctrl+Alt+S) > Project Settings > Inspections > PHP > Undefined > Undefined variable
答案 1 :(得分:6)
是的,你可以做两件事来摆脱这个警告。你说的是什么:
$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"
且不是{ 't "button_b"
)。如果发生这种情况,您将在未设置时打印$smith
,这可能是您脚本中的错误。