PhpStorm - 如何强制处理字符串?

时间:2018-02-12 13:08:15

标签: php ide phpstorm

我如何强制以字符串形式处理,而不是被IDE解释为不是?

当然,以下字符串相当不寻常,并被IDE识别为SQL。

'SELECT {$selectors} FROM `{$table}`{$where}{$order}{$limit}{$offset}'

正如您现在可能猜到的那样,占位符被视为无效的SQL代码,并在IDE中给我一些错误。

已经尝试"修复"那些问题是通过 @noinspection ,但在这一行代码中检测到多个警告和错误,这是不可能抑制那些"问题"一个接一个。

另一个缺点是,有些错误要求我禁用一些非常有用的检查,而我真的不想这样做。

那么,是否有办法强制PhpStorm将该字符串视为实际字符串而不是,在这种情况下,SQL?

2 个答案:

答案 0 :(得分:2)

您可以从“工具”下的设置自定义SQL参数数据库。只需添加占位符模式即可。然后SQL分析器应该将其识别为有效。

Screen

答案 1 :(得分:1)

您可以在所有字符串中禁用SQL语言注入。缺点:它影响整个项目(甚至所有项目,考虑到它是一个内置规则,因此它是一个IDE范围的设置)。

这可以在Settings/Preferences | Editor | Language Injections完成。

仅针对该字符串的选项是通过在字符串之前放置Plain Text 来强制注入/** @lang Text */语言:

$s2 = /** @lang Text */'SELECT {$selectors} FROM `{$table}`{$where}{$order}{$limit}{$offset}';

看到区别:

enter image description here

PS 请注意内插字符串(本例中为HEREDOC;但使用""作为分隔符进行定位)与''(单引号/ NOWDOC)之间的区别。它仍然将其视为SQL但不显示任何警告(这意味着IDE了解$table是动态的)。 但它可能只是我的设置 - 在我几年前的测试项目中检查它......

enter image description here