首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPStorm:由include/require引起的未定义变量

PHPStorm:由include/require引起的未定义变量
EN

Stack Overflow用户
提问于 2014-03-18 18:36:41
回答 6查看 20.7K关注 0票数 35

PHPStorm显示,来自其他文件的所有变量,无论是必需的还是包含的,都是未定义的。我找到了这个解决方案here,但在我禁用该选项Ignore 'include' and 'require' statements之后,集成开发环境忽略了所有未定义的变量。

例如,我有一个包含content $name = 'Bob'的文件a.php和一个需要文件a.php的文件b.php。当我在文件b.php中输入echo $name时,它按预期工作并显示'Bob'。然而,集成开发环境突出显示了变量$name,声明它是未定义的。如果禁用选项'Undefined variable' - Ignore 'include' and 'require' statements,集成开发环境将停止突出显示它。

有了这个选项,我现在可以编写任何变量,例如b.php文件中的$sdadasdasdas,而集成开发环境不会突出显示它。

PHPStorm能理解哪些变量设置在包含/必需的文件中,哪些没有设置吗?

EN

回答 6

Stack Overflow用户

发布于 2019-06-22 18:28:55

以上所有答案都删除或抑制了imho不是很好的解决方案的警告。

最好的解决方案是使用变量添加带有doc块的header。

示例:

代码语言:javascript
复制
<?php
/**
 * @var string $name
 * @var FormData $form
 */
?>

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

票数 49
EN

Stack Overflow用户

发布于 2016-02-02 15:53:22

正如hakre所指出的,这个警告可能是一个坏的代码气味的信号。但是,如果之前存在include require 或调用,则可以禁用PHPStorm对未定义变量的检查。

取消选中Settings/Editor/Inspections/PHP/Undefined variable中名为"Ignore 'include‘and 'require’statements“的单选按钮。

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

代码语言:javascript
复制
require $path; // $some_variable is defined in that file
/** @noinspection PhpUndefinedVariableInspection */
$config["DBSettings"] = [
    "server" => $some_variable
];
票数 39
EN

Stack Overflow用户

发布于 2020-11-28 07:54:05

启用“在当前文件之外搜索变量的定义”

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22476778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档