PHPStorm:由包含/要求引起的未定义变量

2022-08-30 11:45:22

PHPStorm表明,来自其他文件的所有变量,无论是必需的还是包含的,都是未定义的。我在这里找到了这个解决方案,但是在我禁用该选项后,IDE忽略了所有未定义的变量。Ignore 'include' and 'require' statements

例如,我有一个包含 内容 的文件 和 文件 ,它们需要该文件 。当我键入文件时,它按预期工作并显示.但是,IDE 会突出显示该变量,声称它是未定义的。如果我禁用该选项,IDE 将停止突出显示它。a.php$name = 'Bob'b.phpa.phpecho $nameb.php'Bob'$name'Undefined variable' - Ignore 'include' and 'require' statements

使用该选项,我现在可以编写任何变量,例如在文件中,并且IDE不会突出显示它。$sdadasdasdasb.php

PHPStorm 能否了解哪些变量是在包含/必需的文件中设置的,哪些不是?


答案 1

以上所有答案都删除或抑制了警告,恕我直言,这不是很好的解决方案。

最好的解决方案是使用使用的变量添加带有文档块的标题。

例:

<?php
/**
 * @var string $name
 * @var FormData $form
 */
?>

这不仅可以防止显示“未定义的变量”警告,还可以记录您的代码并使自动完成按预期工作。


答案 2

正如hakre所指出的,这个警告可能是代码气味不好的迹象。但是,如果存在先前的包含需要调用,则可以禁用 PHPStorm 对未定义变量的检查。

取消选中设置/编辑器/检查/PHP/未定义变量中的单选按钮,该变量名为“忽略'包含'和'要求'语句”。

enter image description here

如果您不想禁用此检查,可以使用 PHPStorm 的 @noinspection 注释单个语句禁用它。示例代码:

require $path; // $some_variable is defined in that file
/** @noinspection PhpUndefinedVariableInspection */
$config["DBSettings"] = [
    "server" => $some_variable
];

推荐