【问题标题】:PhpStorm warning PHP variable might not have been definedPhpStorm 警告 PHP 变量可能尚未定义
【发布时间】:2012-07-29 21:09:51
【问题描述】:

考虑:

<?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 文件。

有什么想法吗?

【问题讨论】:

  • 我强烈建议您在任何使用之前始终声明/初始化变量...这样调试就容易多了。
  • ... 并且不要使用全局变量进行设置(例如 db 详细信息等——静态类以获得帮助)——当然,如果它是你自己的代码 :)

标签: php phpstorm


【解决方案1】:

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

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

*注意:设置在菜单FileSettings (Ctrl + Alt + S) → 项目设置检查PHP未定义未定义变量

【讨论】:

  • 这些设置在哪里?
  • 文件 > 设置 (Ctrl+Alt+S) > 项目设置 > 检查 > PHP > 未定义 > 未定义变量
  • 谢谢科布拉。 @Dreen:请更新答案,因为屏幕截图确实缺乏上下文。
【解决方案2】:

是的,您可以做两件事来消除此警告。你说的:

$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,这可能是您的脚本中的错误。

【讨论】:

  • PHPSTORM 比我想象的要聪明。如果我将 elseif 更改为 else 以便通过代码的所有路径都分配一个值,那就很高兴了。我的 db_login 包含文件如何定义数据库、用户、密码、表等。有什么方法可以让它“查看”包含文件,这样我就不必全部预定义?
  • 因为不存在不定义$smith 的条件。它实际上很有帮助(IMO),因为它告诉您存在一个条件,您将访问尚未定义的变量。如果您使用“错误”条件(即$submit 不是button_abutton_b)执行脚本,您只会从PHP 获得此信息。对于您的包含文件问题,请参阅下面 Dreen 的回答。
猜你喜欢
  • 2016-07-07
  • 2012-01-02
  • 2022-01-15
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 2018-05-03
相关资源
最近更新 更多