6

考虑:

<?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文件时,这种情况经常发生。对于WAMPMAMP和真正的软管,我有不同的db_login.php文件。

有什么想法吗?

4

2 回答 2

17

如果 include 语句的require位于变量访问之前的同一执行流中,您可以告诉 PhpStorm 忽略未定义的变量报告。

您会在“未定义变量”中找到它 - 忽略“包含”和“要求”语句。它默认启用,因此您应该禁用它。

在此处输入图像描述

*注意:设置在菜单FileSettings ( Ctrl+ Alt+ S) → Project SettingsInspectionsPHPUndefinedUndefined variable

于 2012-08-01T01:28:39.493 回答
7

是的,你可以做两件事来摆脱这个警告。你说的:

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

或者在打印时检查它是否已设置:

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

但是,这只是一个警告,它让您知道存在一个$smith未定义的条件(when $submitis not"button_a"和 is not "button_b")。如果发生这种情况,您将在$smith未设置时打印,这可能是您的脚本中的错误。

于 2012-08-01T01:23:37.613 回答