PhpStorm 2021.2 最新变化

PhpStorm 2021.2 是一项主要更新,引入对 PHP 中泛型的初步支持、PHP 8.1 中的枚举、单行数组形状注解、改进的 PHP 代码自动格式化以及新的检查和重构等多项增强。

PHP 的泛型

PHP 目前没有在语言级别上提供对泛型的支持,但是通过注解使用泛型已经相当常见。 使用集合、容器、工厂和其他应用程序时,它们将使代码更安全、更可预测。

PHP 的泛型

我们通过 @template 注解添加了对泛型的支持。 这使得集合操作在许多情况下更加简单,建议将包含预期类型的元素。

对于工厂模式,您现在可以使用 class-string<T> 注解,您将获得更好的代码补全。

对泛型的初步支持尚不完善,并且具有已知局限。 您可以在这篇博文中了解更多相关信息。

PHP 8.1 枚举

新的 8.1 版 PHP 解释器预计将于 2021 年底发布。 但与往常一样,我们会提前推出支持。

枚举是 PHP 8.1 版本中最受期待的一大特性。

通过 PhpStorm 2021.2,您可以立即开始使用枚举。 IDE 提供代码建议和验证,防止您操作错误。

PHP 中的枚举包含一组用例,可以具有方法,也可以用作类型提示。在所有用例中,PhpStorm 都将提供错误高亮显示和恰当的建议来帮助您节省时间。

Backed Enum

枚举用例可以有标量等效项。 如果您需要将枚举保存到数据存储中,这将非常有用。 这种枚举即 Backed Enum。

通过快速修复,您可以向 Backed Enum 添加标量类型声明。

枚举还可以与条件和匹配表达式等功能良好配合。

了解更多

数组形状(Array shape)

数组形状(Array shape)

如果您的代码中有对象式数组,您现在可以使用这个 PHPDoc 注解定义其结构:array{key: type, key: type, ...}

PhpStorm 为此类带注解的数组提供代码补全,节省常规性输入的时间并避免引入错误。

支持仅限于单行数组形状定义。 对于更大的结构,通常最好使用真实的对象和类。

改进了 Extract Method 重构

最常用的 PhpStorm 重构之一 Extract Method 已得到改进。

允许您将大方法拆分为更小的单元,并可消除重复代码。

要使用此重构,请选择任意代码段并按 ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M)。

重构重复代码

PhpStorm 带有 Duplicated code fragment 检查。 高亮显示非常相似的代码块,只要最终结果相同,格式、变量名称和语句顺序都可以不同。

此检查高亮显示重复片段的第一行。 您现在可以在高亮显示的行上按 Alt+Enter 并从重复代码快速修复调用 Extract Method 重构来快速重构此类代码。

PhpStorm 还可以在重构期间在当前范围(方法、类或文件)中找到较小代码片段的重复项。 选择一个代码片段,然后按 ⌘⌥M (Cmd+Alt+M / Ctrl+Alt+M) 调用重构。 您将在对话框底部看到 Review and replace duplicates 复选框。

新的代码片段智能选择器

新的代码片段智能选择器

您还可以在不选择代码的情况下调用 Extract Method 重构。 在这种情况下,PhpStorm 会建议一列可能的代码片段。 建议已经过筛选并且只包含对重构有意义的片段。

扩展选区的改进

您可能已经知道用 Expand / Shrink selection 操作(MacOS 上为 ⌥+上 / ⌥+下,Windows 上为 Ctrl+W / Ctrl+Shift+W)可以选择一段代码。 这是选择重构代码的最快方法之一。

此版本引入了一个小巧的实用更新,可选择没有花括号的块。

Extract Method 重构获得更多改进! 在此博文中了解详细信息。

检查与快速修复

每个版本都带有一系列检查,减少您寻找错误和修正错误的时间。 在 PhpStorm 中高亮显示的代码上按 Alt+Enter 应用修正。

条件可替换为 `?->`

条件可替换为 `?->`

用 PHP 8 的新安全运算符替换不必要的 null 检查。 按 Alt+Enter 执行转换。

从定义常量的类使用常量

从定义常量的类使用常量

PhpStorm 将高亮显示通过子类或子接口而不是定义常量的实体访问的常量。 使用 Alt+Enter 快速修复将实体名称替换为定义常量的实体的名称。

逻辑表达式中的冗余条件

逻辑表达式中的冗余条件

PhpStorm 现在将评估部分条件以识别冗余。 这适用于检查不明显并且您无法通过观察判断冗余检查的情况。

Refactoring Opportunities 检查

我们在 Settings / Preferences | Editor | Inspections 的 PHP 部分添加了一组新的检查。

该组包括有助于确定重构的良好候选项的检查。 该组包括有助于确定重构的良好候选项的检查。这些检查默认禁用,但即使在禁用状态下,您也可在检测到的代码附近看到一个额外的装订区域图标 (而不是在编辑器中加下划线)。

点击装订区域图标将调用建议的重构。

这些检查是多种代码质量指标的组合:循环复杂度、嵌套深度、使用的变量数、总行数等等。

您可以在每项检查的描述中找到使用的指标列表。

了解更多

IDE

在提交前运行测试

在提交前运行测试

我们扩展了可以执行测试的可能提交前操作的列表。 勾选 Run Tests 复选框,选择要运行的配置。 在将代码放入 VCS 前对其验证可以提供很大帮助。

您现在还可以点击相邻的 Choose profile 自定义 Analyze codeCleanup 选项。

保存时的操作

保存时的操作

我们在 Preferences / Settings | Tools | Actions on Save 下添加了一个新的配置页面。

您将找到可以使用 ⌘S / Ctrl+S 或在隐式自动保存时触发的操作列表。 这些操作包括代码检查、重新格式化、代码清理和部署等。

统一的 Show Diff

统一的 Show Diff

PhpStorm 默认会在编辑器中打开初始文件和更改后文件之间的差异比较,无论您是在何处调用 Show Diff 操作。 如果您更喜欢在单独的窗口中跟踪更改,则可以从编辑器中拖放所需的文件。

Local History 修订中的文本搜索

Local History 修订中的文本搜索

Local History 一直是众多开发者的幕后帮手,新的改进允许您使用 Local History 对话框中的搜索字段在本地修订中快速找到所需的文本。

Local History 修订中的文本搜索

GPG 签名

PhpStorm 2021.2 提供了一种保护提交的新方法。 您现在可以通过 GPG 启用 Git 提交签名。 只需转到 Settings | Version Control | Git,从下拉列表点击 Configure GPG Key

本地化 UI

中文、日语和韩语的本地化 UI

从此版本开始,您可以体验到 PhpStorm 完全本地化的中文韩语日语 UI。 本地化以非捆绑式语言包插件提供,可以轻松安装到您的 IDE*。 超过 150 万用户已开始使用我们语言包的部分本地化 EAP 版本。 现在您可以享受完整的本地化体验!

Web 技术

WebStorm 2021.2 中的所有新功能和改进也都适用于 PhpStorm 2021.2,要么开箱即用,要么通过插件 Marketplace 中的免费插件提供。

React useState hook 的 Rename 重构

React useState hook 的 Rename 重构

PhpStorm 现在可以重命名 useState 的值和函数。 将文本光标置于状态值上并按 ⇧F6/Shift+F6 键或转到右键点击上下文菜单中的 Refactor | Rename

require() 自动导入

require() 自动导入

使用 CommonJS 模块时,PhpStorm 现在可以通过代码补全添加缺少的导入语句。

数据库工具

查看 DataGrip 2021.2 最新变化,也可以在 PhpStorm 中使用所有这些功能。 此处仅列出一部分。

DDL 数据源

DDL 数据源

现在可以基于真实数据源生成 DDL 数据源。 DDL 文件将在磁盘上创建,新数据源将以其为基础。 这样,您将始终能够重新生成这些文件并刷新 DDL 数据源。

MongoDB 的字段和运算符补全

MongoDB 的字段和运算符补全

我们的代码补全现已进入 MongoDB 控制台。

其他增强功能

以下仅为 PhpStorm 2021.2 众多额外改进和增强中的一小部分:

  • 使用 PhpStorm 的内置 Web 服务器在浏览器中预览 HTML 和 PHP 文件。 PhpStorm 现在可以在保存时自动重新加载打开的页面
  • 现在,用户可以更方便地重新组织工具窗口。 将鼠标悬停在您要移动的工具窗口的顶部,然后将其拖放到所需位置。
  • PhpStorm 将自动清理距上次更新已超过 180 天的所有缓存和日志目录。 您也可以通过 Help | Delete Leftover IDE Directories 手动清理。
  • 添加了新的终端选项,用于设置光标形状和将 Option 用作元键。
  • Preferences 中添加了新的 Advanced settings 页面,提供了用于微调 PhpStorm 的选项。
  • 大幅提高了大型文件集的 FTP 上传速度。
  • dirname() 中添加了对 levels 参数的支持。
  • 解决了 PHP 代码格式的所有突出问题。