定义变量变量时未定义的变量

Undefined variable on defining variable variables

提问人:MAChitgarha 提问时间:6/18/2018 最后编辑:MAChitgarha 更新时间:6/18/2018 访问量:363

问:

我想将数据从 .json 文件导入 PHP 文件,并使用变量变量和 foreach 循环动态定义新变量。但是,PhpStorm 无法识别我的变量并给我未定义的变量警告。该怎么办?

考虑一个包含一些数据的文件data.json,它存在并且是可读的。主要代码如下所示:

foreach (json_decode(file_get_contents("data.json"), true) as $varName => $value)
    $$varName = $value;

注意:我既不想使用 PHPDoc,也不想禁用“未定义的变量”检查(感谢 LazyOne)。

更新:感谢 LazyOne 的评论,我将使用 PHP 文件而不是 JSON 文件来保存数据。

php phpstorm 变量

评论

1赞 Nigel Ren 6/18/2018
有什么理由你不想把它保留为一个数组,它更灵活,更不容易出现问题。
1赞 LazyOne 6/18/2018
“我不想使用 PHPDoc”井。。。那么唯一的其他选择是禁用“未知变量”检查。
2赞 Nigel Ren 6/18/2018
您的 IDE 对变量一无所知。它必须理解你的JSON以及你如何解释它,这超出了它可以处理的范围。
1赞 LazyOne 6/18/2018
您别无选择:IDE 不知道这些变量来自哪里,也不知道为什么它们应该被该检查“忽略”。你想使用“魔术”——准备好面对后果——IDE 现在所做的静态分析不允许分析这种动态代码。
2赞 LazyOne 6/18/2018
我不知道你在那里得到了什么数据,以及它是如何使用的/它来自哪里等。从速度的角度来看 -- 将其保留为 PHP 数组/常量/变量。如果数据来自某些外部来源/其他语言或服务,最好使用您正在使用的 (JSON/YAML/XML)。但是您每次都要浪费一些时间将数据解析/转换为PHP可访问的形式。不过,缓存会有所帮助。

答: 暂无答案