jas*_*sie 4 mysql sql-server syntax-highlighting heredoc phpstorm
我的 PHP 7.3 应用程序连接到 MS SQL Server 或 MariaDB,具体取决于在 Windows 或 Linux 下运行。
对于我的查询,我有时使用 SQL Server 语法编写查询,有时使用 MySQL 语法编写查询。对于代码验证等,我通过 HEREDOC使用PhpStorm 的语言注入
当然,只有在项目中配置的方言才能正确验证。
例子:
switch ($dt_type) {
case 'MSSQL':
$sql_string = <<<SQL
[MSSQL query here]
SQL;
case 'MYSQL':
case 'MSSQL':
$sql_string = <<<SQL
[MYSQL query here]
SQL;
}
Run Code Online (Sandbox Code Playgroud)
我在我的项目中配置了 MSSQL 方言,因此 PhpStorm(正确地,预期地)将我的 MySQL 查询标记为无效并怪异的语法突出显示。
有没有办法告诉 PhpStorm,一个特定的字符串应该用不同的 SQL 方言进行验证,例如通过在该字符串声明之前的注释中声明它?我尝试了@lang注释和语言注入注释.. 没有任何成功。
我知道这可能是不可能的,但也许有人知道一个技巧?
SQL 用于为该文件应用当前的 SQL 方言(您可以将 IDE 配置为针对每个文件/文件夹使用不同的方言)。
要在同一个文件中有 2 个方言,只需:
SQL如果您将在整个项目中更改它,请不要用作标识符,因为它将注入当前的 SQL 方言。
我的意思是:你可以使用它,这不是问题;但如果您稍后更改设置(该文件夹/文件或整个项目的 SQL 方言),请不要迷路/困惑
创建并使用更具体的标识符,而不是指示 IDE 在那里使用特定的方言。
很简单:只需克隆并调整一些捆绑SQL标识符的语言注入规则:
Settings (Preferences on macOS) | Editor | Language Injections
克隆现有规则<<<SQL并根据需要进行调整(或使用正确的类型从头开始创建新规则)
正如您从这个例子中看到的,PostgreSQL 的字符串抱怨语法(没有附加到项目的数据库,因此是未知的table表):
通过就地语言注入@lang也有效。请注意,注入必须放在字符串内容之前,而不是变量等之前。
$sql1 = /** @lang MySQL */'SELECT * FROM `table`';
$sql2 = /** @lang PostgreSQL */'SELECT * FROM `table`';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |