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

PhpStorm - How to force a string to be handled as such?

我怎样才能强制将其作为字符串处理而不被 IDE 解释为不是它的东西?

假设以下字符串很不寻常,并被 IDE 识别为 SQL。

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

正如您现在可能猜到的那样,占位符被视为无效的 SQL 代码,并在 IDE.

中给我一大堆错误

已经尝试通过 @noinspection 解决这些问题 "fix",但是在那一行代码中检测到多个警告和错误,这是不可行的一个一个压制"issues"

另一个缺点是有些错误需要我禁用一些非常有用的检查,我真的不希望这样。

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

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

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


该字符串的一个选项是通过在字符串 :

之前放置 /** @lang Text */ 来强行注入 Plain Text 语言
$s2 = /** @lang Text */'SELECT {$selectors} FROM `{$table}`{$where}{$order}{$limit}{$offset}';

看区别:

P.S. 请注意内插字符串(在本例中为 HEREDOC;但使用 "" 作为分隔符的字符串)与 ''(单个quotes/NOWDOC)。它仍然将其视为 SQL 但没有显示任何警告(这意味着 IDE 理解 $table 是动态的)。 但这可能只是我的设置 -- 在我几年前的测试项目中检查它...

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