开发工具

PhpStorm 2019.2 现已发布:PHP 7.4 类型属性、定位重复项、PHP 正则表达式、EditorConfig、Shell 脚本等

PhpStorm 2019.2 已正式推出!

除了性能和稳定性改进之外,这个主要版本还引入了一些新功能,例如支持 PHP 7.4 类型属性、即时定位重复代码、在 PHP 中高亮显示和检查正则表达式、开箱即用的 EditorConfig 支持、Shell 脚本、20 多种编程语言的语法高亮显示,等等!

欢迎在我们网站上浏览 PhpStorm 2019.2 的最新功能并下载使用。

在这篇博文中,我们将详细介绍所有重大变更。本文将我们过去几个月在这里发布的所有 EAP 博文进行了综合。

 请准备好,我们开始了!

PHP 7.4 类型属性

PHP 7.4 将成为 PHP 7.0 之后最出色、功能最丰富的版本!看看所有接受的功能吧。
最受期待的功能是类型属性,PhpStorm 2019.2 已经完全支持该功能!

 其中包括高亮显示、类型推理和检查。

要快速添加类型声明,请在一个没有类型的属性上按 Alt+Enter ,然后选择Add declared type for the fieldPhpStorm 将根据 PHPDoc、默认值或参数类型声明(如果值通过构造函数注入)自动检测类型。

??=(null 合并赋值)运算符

带有 null 检查的全新快速赋值运算符使用起来非常便捷,特别是在有一些长变量或语句的时候。

PhpStorm 中的语法支持和高亮显示自不用说,PhpStorm 还提供快速修复 (Alt+Enter),帮助减少在出现 ?? 运算符时产生的冗余性:

数组中的延展操作符

PHP 已从 v5.6 开始支持参数解压缩(又称为延展操作符 ...)。在即将推出的这个版本中,PHP 将该运算符引入数组表达式,PhpStorm 2019.2 也同样支持:

在后台,PhpStorm 还会检查运算符的用法是否正确,并确保仅解压缩数组和可遍历项,并且不执行 PHP 解释器不支持的任何操作:

下次发布 PhpStorm 2019.3 时,我们期望支持所有 PHP 7.4 功能,例如箭头函数、数值文字分隔符、covariant 返回和 contravariant 参数,等等。

正则表达式注入

之前在 PhpStorm 中,PHP 代码的正则表达式模式在默认情况下并未高亮显示,而仅仅显示为纯文本。

现在,PhpStorm 2019.2 为 PHP 提供了全面的正则表达式支持!这意味着,只要您的代码使用 preg_* 函数,就会高亮显示模式,并自动确认其正确性。

此外,您现在还可以直接在 IDE 中测试模式。将脱字符号移到模式上方,按Alt+Enter 可以调用快速操作 Check RegExp

 

即时检测重复项

我们添加搜索重复项的功能已经有一段时间了,此功能可以通过 Code → Locate Duplicates 访问。它可以帮助您消除重复项,使代码更加简洁稳定。

如果您还从未使用过,绝对应该一试,因为一个普通代码库通常包含的重复项数量真的令人惊讶!此版本的 PhpStorm 将重复项分析提升到了新层次,允许您动态发现重复项。

现在,如果您偶然发现了一个现有的重复项,或者在编写新代码或粘贴一段代码时产生了重复项,马上就会发现。分析提供意图操作,允许您导航到重复项或在工具窗口中显示重复项:

顺便说一下,这些是 Extract 重构的优秀候选项。

新检查名为 Duplicated code fragment,默认启用。您可以在 Preferences | Editor | Inspections | General | Duplicated code fragment → PHP 下面配置重复项阈值。可以在 Preferences | Editor | Duplicates 下面找到其他相关设置。

支持 PHPT 测试文件

希望为 PHP 解释器源代码作贡献并加入 PHP 内核核心团队?如果您对 C 语言不太了解,那可能有点困难。开始为任何开源项目作贡献的最好方法是编写文档或添加测试!幸运的是,对于后者,您只需要了解 PHP。

PHP 的测试是以特殊的 .phpt 文件编写的,这些文件基本上是一组包含附加信息的 PHP 脚本,被分为若干部分。

对了,PhpStorm 2019.2 支持 .phpt 文件!

  • 高亮显示部分和脚本

  • PHP 和 INI 语言自动注入相应部分

  • 补全部分名称

  • 跳到在 EXTERNAL 部分中引用的文件

在 PHP TestFest 教程PHP Internals Book 和 qa.php.net 上寻找有关为 PHP 源代码编写测试的更多有用信息。

通过任何远程 PHP 解释器运行 Composer

最近,在 PhpStorm 2019.1.2 中,我们增加了对通过 Docker 镜像运行 Composer 的支持。在此基础上,我们现在可以确认 PhpStorm 2019.2 能够通过在您的 IDE 中配置的任何远程解释器运行 Composer。解释器可以是 Docker、Docker-compose、Vagrant、SSH 远程服务器或任何其他选项。要查看此功能,请转至 Preferences | Languages & Frameworks | PHP | Composer,然后选择 Remote Interpreter

从下拉菜单中选择任何一个解释器或添加一个新解释器!

意图和快速修复

将一行列表转换为多行,以及反向转换

根据 PSR-2,应该将长度超过 80 个字符的行拆分为多行,且每行不超过 80 个字符。因此,如果编写的代码具有很长的数组或函数自变量/参数列表,可在上面按 Alt+Enter,然后选择操作 Split comma-separated values into multiple lines

也可以执行相反的操作,将这些项整合为一行,该操作称为 Join comma-separated values into a single line

在 PHP 中,此操作对数组、自变量列表和参数列表均有效。

顺便说一句,您可以在配置裡調整代码样式设置。选择您不喜欢的代码样式所在的区域,按 Alt+Enter,然后选择 Adjust code style settings。为方便起见,PhpStorm 将仅更新那些影响所选行的设置:

针对 Switch 语句的意图和检查

首先,现在可以通过复制现有分支然后进行修改的方式快速添加分支。在 body-less case 语句上按 Alt+Enter,然后选择 Copy ‘switch’ branch。别忘了修改复制的分支,因为如果 switch 代码块含有重复分支(即相同的主体),PhpStorm 将发出警告,既不能冗余也不能写错:

此外,在 PhpStorm 2019.2 中,如果代码中某个 switch 语句没有默认分支,也可以使用 Alt+Enter 快速修复。

字符串操作工具箱中的新增操作

PhpStorm 可以帮助您进行常规字符串操作。只要您需要拆分字符串、更改引号、将插值转换为 sprintf 调用或将串联转换为插值,只需在字符串上按Alt+Enter,然后从列表中选择相应操作即可。

在 PhpStorm 2019.2 中,我们用一系列更简洁的新增操作扩展了此列表。假设您的 sprintf 表达式很长,但需要替换子字符串,并使其成为参数。只需将其选中,按 Alt+Enter,PhpStorm 就会为您选择正确的参数位置:

当您需要提取部分字符串并串联时,同样适用。

其他 PHP 相关更新

方法断点通过间距体现

在调试时,有时您希望了解执行流是否进入某个函数,即函数是否运行。为此,您必须在函数体中找到第一个可执行的行,并在上面放置一个断点。PhpStorm 2019.2 支持方法断点,所以您只需要在函数声明行上设置断点,您看到的不是圆形图标,而是菱形。

Structural Search 预览

Structural Search 是一个强大的工具,不仅可以通过文本,还可以通过定义约束类型来搜索特定代码模式。转至菜单 Edit → Find → Search Structurally… 尝试一下。结构化搜索的问题在于创建一个好的搜索模式可能很困难。PhpStorm 2019.2 带来了受欢迎的变化 – 现在 IDE 会立即在编辑器中高亮显示结构化搜索的发现。您不必在尝试搜索模式时反复运行修改过的模式。

HTTP 客户端

支持 cURL 格式

大多数 Web 开发和文档工具现在都提供 “Copy as cURL” 命令,以便您 “重播” 请求并了解其工作原理。

现在,您可以在 PhpStorm 中处理此类请求。只需使用 Cmd+Shift+N 创建一个新的 .http 文件或一个 HTTP 请求临时文件,然后粘贴一个 cURL 请求字符串。它将自动转换为完整请求。

HTTP 客户端保留所有 Cookie

假设您提出了使用服务的身份验证请求,在随后的请求中,您想要调用一些需要其他权限的端点。之前,您会丢失第一个响应的身份验证 Cookie。现在,这个问题已解决!PhpStorm 会为您保留所有 Cookie,并在后续请求中进行传输。

如果您不希望通过具体请求保存 Cookie,可以添加一个特殊标记 @no-cookie-jar

版本控制

无需模式对话框的新提交流程假设您对项目层次结构不同文件夹中的文件进行了大量更改。

 

要提交更改,请转到 Version Control 工具窗口中的 Local Changes 选项卡。

 

选择文件,然后您会看到另一个弹出窗口,可以在其中键入提交消息。此时,弹出窗口阻止了您,您无法看到项目。PhpStorm 2019.2 让您可以直接从 Local Changes 进行提交。现在,在提交时,您可以浏览源代码,查看具体文件的历史记录,查看与提交位于相同区域中的文件的差异,以及使用 IDE 的其他功能。以前,所有这些操作都是不可能的,因为模式提交对话框阻止了所有其他的 IDE 功能。

要启用此功能,请选中 Preferences | Version Control | Commit 对话框下面的Commit from the Local Changes without showing a dialog 复选框。

关于提交相关文件的提醒

在您进行提交时,PhpStorm 2019.2 会建议您将通常修改的文件和目前正在提交的文件放在一起提交。

针对使用 .gitignore 的改进

PhpStorm 支持 .gitignore 并会高亮显示在 Project 视图中列出的已忽略文件和文件夹。

现在,将无版本的文件添加至 .gitignore 变得容易了一些。要在 Version Control工具窗口中执行此操作,请右键点击 Unversioned Files 组中的文件,然后选择Add to .gitignore

在您的 .gitignore 文件中,文件和文件夹名称可以使用代码补全。在名称上按下Cmd+click,即可在 Project 视图中跳到此文件或文件夹。

从日志列中隐藏作者、数据或哈希

Show Diff with Working Tree 操作

要查看当前分支和所选分支之间的差异,请在 Git Branches 弹出窗口中选择新的Show Diff with Working Tree 操作。

Project 视图中的目录历史记录

要查看目录的历史记录,请在 Project 视图中选择多个文件夹,然后从上下文菜单中选择 Git | Show History,就可以看到这些文件夹中任何一个的所有更改。

Docker

我们已将 Docker 移至全新的 Services 工具窗口。此工具窗口的目标是从一个地方查看所有连接和正在运行的进程。现在,在 PhpStorm 中的默认情况下,该窗口包括 Docker 和数据库连接。您还可以在 Run | Edit Configurations… | Templates 的 Configurations available in Services 部分中将 Run/Debug configurations 添加到 Services 工具窗口。

您既能以节点形式查看将所有服务类型,也可更改视图,以选项卡形式查看。从工具栏中使用 Show in New tab 操作,或只是将所需节点拖放到 Services 工具窗口。

Docker 容器文件系统的浏览器

现在可以查看运行的 Docker 容器的文件系统。文件系统将显示在新增的 Files选项卡中。

编辑器

错误输入的关键字和名称的代码补全

在您输入时,可能经常发生意外混淆某些字符的情况。例如,您输入了 funtcion或 fnction,而不是 function。现在,代码补全可以理解这类错误,并且仍会向您建议最相关的选项。

这适用于所有支持的语言和符号 – 关键字、类、函数、成员等。

“Move Caret to Next Word” 操作提供众多选项

通过 Move Caret to Next Word 操作,您现在可以选择将脱字符号置于何处:当前单词的结尾或者下一个单词的开头。在 Preferences | Editor | General 的Caret Movement 区域中选择最适合您的行为。

Tab 键现在让您跳出右中括号或引号

另一个可以帮助您更快输入的功能现在开箱即用:Tab 键现在可以让您跳出右中括号或引号。要禁用此选项,请转到 Preferences | Editor | General | Smart Keys,然后取消选中 Jump outside closing bracket/quote with Tab when typing复选框。

选定代码自动用引号或大括号包围

另一个超级方便的功能现在已默认启用:当您输入大括号或引号时,PhpStorm 将自动使用大括号或引号包围选定的代码。

如果您不喜欢我们提供的这个功能,请转到 Preferences | Editor | General | Smart Keys,然后取消选中 Surround selection on typing quote or brace 复选框。

macOS 现在采用新的默认键盘映射

我们为从 Mac OS X 至 macOS 10.5+ 的 macOS 更改了默认键盘映射。我们还重命名了键盘映射:Mac OS X 10.5 现在叫作 Default for macOS,过时的 Mac OS X 现在为 IntelliJ IDEA Classic。

20 多种语言的语法高亮显示

您的项目中是否有一些非 PHP 语言的文件?在 PhpStorm 2019.2 中,我们为 20 多种编程语言添加了语法高亮显示,这些语言包括 Python、Ruby 和 Go。您尽管使用,无需额外配置。

对于那些必须偶尔查看使用 PhpStorm 不完全支持的语言编写的代码的用户,我们希望通过这一变化改善其体验。但 PhpStorm 仍主要是面向 PHP 和 Web 的 IDE,因此,我们不打算对其他语言提供语法高亮显示之外的功能支持。

这些语言的语法高亮显示使用 TextMate 语法构建,PhpStorm 捆绑了一套适用于不同语言的语法文件。在 Preferences | Editor | TextMate Bundles 下面查看支持的语言的完整列表。

Shell 脚本

PhpStorm 2019.2 为 Shell 脚本提供了丰富的编辑支持,包括单词和路径补全、重命名重构、代码生成 (Cmd+N) 和一系列动态模板 (Cmd+J)。

PhpStorm 还包括与若干外部工具的集成,进一步增强了对 Shell 脚本的支持。

在检测脚本中可能的错误时,IDE 会提示您安装名为 Shellcheck 的检查工具,它可以检查很多问题并对问题提供快速修复。

PhpStorm 2019.2 还集成了名为 mvdan/sh 的外部格式化程序引擎。首次调用Reformat Code 操作时,IDE 会建议安装此工具,完成后,PhpStorm 会正确格式化您的 Shell 脚本。

最后也是最重要的,还与 Explainshell 网站进行了集成。您可以在编辑器中选择一个命令,然后在上面按 Alt+Enter。IDE 会将您转至 Explainshell,在这里会找到所选命令的详细说明。

EditorConfig

将 .editorconfig 文件放在项目的根目录下,这有助于在多个开发者跨各种编辑器和 IDE 编写代码时,保持一致的代码样式。

以前,您必须确保团队中的所有开发者都在 PhpStorm 中安装 EditorConfig 插件,但在 2019.2 中,该插件已捆绑,不需要额外的步骤就可以使用。

您可以为项目中的每个范围设置不同的代码样式设置。只需将 .editorconfig 文件放在文件夹的根目录下即可。在单个项目中,您可以拥有任意数量的.editorconfig 文件。

PhpStorm 还可以在同一个文件中管理 PhpStorm 特定的选项

IDE 特定的新选项涵盖大部分代码样式设置,这在之前只能通过 UI 进行配置。这些选项有前缀 ij_,可以区别于标准的 EditorConfig 属性。

而且,您现在还可以从 Project 视图创建 EditorConfig 文件。选择一个目录,调用上下文菜单,然后选择 New | EditorConfig。IDE 将为您提供选项,帮助您使用标准属性和/或 PhpStorm 特定的属性创建 EditorConfig 文件。在此对话框中,您还可以选择要包含到 EditorConfig 文件中的语言选项。

外观

Project 视图中提供更多信息

我们增加了一个选项,用于在 Project 视图中显示文件的更多相关信息。在 View菜单下面切换 In-place Descriptions,可以预览文件大小、修改日期和时间。

检查工具提示的新外观

检查工具提示现在不仅显示问题描述,还可以立即为您提供第一个可用的修复。要应用第一个建议的修复,请使用 Alt+Shift+Enter 或标准的 Alt+Enter来查看所有可用的快速修复。

更新了 Windows 版的 UI

在 Windows 10 上,PhpStorm 现在采用全新的现代无边框外观。

Web 技术

在 WebStorm 2019.2 最新功能页面中,您可以看到 WebStorm 团队的同事们所做的所有更改。那里提到的所有变化也已整合到 PhpStorm 2019.2 中。

数据库工具

PhpStorm 开箱即包括 DataGrip 的所有功能,因此在数据库工具中有很多新功能有待探索。敬请关注 DataGrip 2019.2 版本的详细概览。

版本说明中提供了所有变更的完整列表,版本说明的篇幅的确很长。

JetBrains PhpStorm 团队
The Drive to Develop

原文发表于2019年7月25日,作者 Roman Pronskiy

Discover more