【发布时间】:2021-05-18 10:42:28
【问题描述】:
如何在 phpstorm 中禁用 SQL 代码的高亮显示? 我曾经禁用所有 sql 检查..但是颜色和字体规则继续过分 我的 php 字符串颜色规则。 这是我想要实现的一个示例:
$var_php = " all text here is red , SELECT * and whatever sql code is in red too " ;
【问题讨论】:
标签: phpstorm
如何在 phpstorm 中禁用 SQL 代码的高亮显示? 我曾经禁用所有 sql 检查..但是颜色和字体规则继续过分 我的 php 字符串颜色规则。 这是我想要实现的一个示例:
$var_php = " all text here is red , SELECT * and whatever sql code is in red too " ;
【问题讨论】:
标签: phpstorm
SQL 语言会自动注入包含 SQL 代码的字符串(通过典型模式检测,例如 select xx from 等)。如果您使用特殊标签(SQL),它也会注入 HEREDOC/NOWDOC。
您可以禁用这些(在下面的屏幕截图中选择)和任何其他不需要的注入规则,或者在 Settings/Preferences | Editor | Language Injections 创建您自己的规则。
P.S.由于您根本不需要任何 SQL/DB 支持,您可以完全禁用 SQL/数据库支持插件。
如果您一般都喜欢这种注入,但只是不希望它们仅在特定位置(例如,因为误报匹配),那么您可以在该字符串中强制使用纯文本。例如:
$str = /** @lang Text */ 'Select all entries from my cool database';
请注意,此类注释必须放在实际字符串之前(因此可以在函数调用参数等中使用),而不是像普通 PHPDoc cmets 那样放在整个变量赋值/语句之前。
附:其他方式也可以:在语言注入规则未自动检测到的某些字符串中强制执行 SQL(例如,当字符串被拆分为连接位或使用未知/意外的序列/语法时)。
【讨论】:
您可以通过创建一个与 DQL 不匹配的新 IntelliLang 注入来禁用它,同时不理会其他 SQL 突出显示/检查。我使用了 : 字符的存在。这将防止 IDE 突出显示 DQL,并将其标记为错误或重新格式化不正确。
我在这里创建了一个带有说明的 Gist:
https://gist.github.com/willemnviljoen/d20ad8ad0cc365a7e80744328246610f
【讨论】:
通常 PHPstorm 在决定何时将 SQL 字符串文字作为 SQL 代码进行检查方面做得很好。对于出错的个别情况,禁用单行检查的最“正确”方法可能是另一个答案中提到的 PHPDoc 注释,例如:
$str = /** @lang Text */ 'Select the answer from the list';
但这对我来说似乎很乱。幸运的是,您可以很容易地欺骗 PHPstorm,因为如果“句子”中的第一个单词不是 SQL 关键字(SELECT/UPDATE 等),它似乎会忽略该字符串。所以一个简单(虽然有点hackish)的方法就是分割字符串,比如:
$str = 'Select'.' the answer from the list';
【讨论】: