phpstorm警告php变量可能尚未定义

mks*_*wtz 6 php phpstorm

<?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

  • 这些设置在哪里? (3认同)

nic*_*ckb 6

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

$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未设置时进行打印,这可能是您脚本中的错误.