PhpStorm 2021.3 最新变化

PhpStorm 2021.3 是一个主要更新,引入了对最近发布的 PHP 8.1 的支持,可更好地处理 PHP 中的泛型,部署、HTTP 客户端和 VCS 集成得到增强。

PHP 8.1

新版解释器刚刚发布! 观看由 Brent Roose 和社区成员制作的视频,简要了解各项全新的语言功能。

枚举

枚举是 PHP 8.1 中最受期待的功能之一。

PhpStorm 2021.2 中引入了对枚举的支持,提供了代码建议和验证以防错误使用。

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

只读属性

Readonly properties are the properties that cannot be changed after initialization, that is, after a value is assigned to them.

PhpStorm 2021.3 将帮助您在代码中有效利用只读属性并确保它们得到正确使用。

专用的检查将确保只读属性仅在声明所在范围内(属性声明本身或类方法中)初始化。

由于只读属性必须始终为类型化属性,PhpStorm 将检查是否指定了类型声明。

只读属性不能具有默认值,但您可以在构造函数中将其初始化为提升属性,因此 PhpStorm 为其提供了一项快速修复。

初始值设定项中的 `new` 运算符

在 PHP 8.1 中,您可以在初始化默认形参的值、静态变量、全局常量和特性实参时使用新的表达式。

PhpStorm 将验证此类用法并高亮显示无效的用例,例如作为类常量或属性提供新对象。

一等可调用语法

PHP 8.1 使您可以通过一等可调用语法获得对任何函数的引用。 现在,您不必再编写 $fn = Closure::fromCallable('strlen');,而是可以使用更短的 $fn = strlen(...); 形式,PhpStorm 将为您提供 Alt+Enter 快速修复,以将您的代码转换为新语法。

纯交叉类型

PHP 8.1 引入了交叉类型,它们的值必须满足多项类型约束,而不仅限一项约束。

PhpStorm 现在将为这些结构提供代码补全,并检查以确保交叉类型未与联合类型组合。 如果您将交叉类型指定为 PHPDoc 注解,PhpStorm 也将能够正确解释。

新的返回类型:`never`

PHP 8.1 为返回值引入了 never 类型。 如果函数被声明为 never 类型,则它将不会返回值,并且会抛出异常或结束脚本执行(就像 die()exit()trigger_error() 函数一样)。

Final 常量

在 PHP 8.1 中,您可以声明 final 类常量以使其不会在子类中被重写,PhpStorm 将验证此类用例。

弃用

除了新功能之外,PHP 8.1 还弃用了一些功能,旨在使语言更加一致且易用。 PhpStorm 将帮助您定位此类已弃用的代码。 下面是几个示例:

已弃用 Serializable 接口

建议使用 __serialize()__unserialize() 魔术方法,取代 Serializable 接口。 在 PHP 8.1 中,您仍然可以使用 Serializable,但前提是实现类同时使用了 __serialize()__unserialize()。 PhpStorm 2021.3 可以高亮显示不正确的代码,并提供了用于添加魔术方法的 Alt+Enter 快速修复。

GLOBALS 用法受到限制

在 PHP 8.1 中使用 $GLOBALS 超全局变量现已受到限制 – 不允许对作为一个整体的 $GLOBALS 执行写入或读取/写入操作。 PhpStorm 将高亮显示此类存在问题的用法。

PHP 的泛型

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

改进了对 Doctrine 集合的支持

PhpStorm 引入了对 IteratorAggregate 接口的支持,对 Doctrine 集合的迭代现在开箱即用。

对 Laravel 集合的支持

In the upcoming Laravel release, the illuminate/collections package will support generics annotations. PhpStorm 2021.3 为此类集合提供了更好的代码补全。

从构造函数推断泛型类型

如果构造函数中具有泛型 @template 形参,并且您想通过将对象作为实参传递来指定类型,现在 PhpStorm 将能够推断正确的类型并提供代码补全。

重构

通过拖放移动类

早些时候,要移动类并更新其命名空间,您的唯一选项是在代码编辑器中使用移动重构 (F6)。 在 PhpStorm 2021.3 中,您可以改为在 Project(项目)视图中使用拖放操作。 这样,项目结构将在运行期间可见。 此外,您可以使用此技术移动多个类或整个文件夹,PhpStorm 将正确更新所有引用。

内联函数或方法

Inline method(内联方法)重构使您能够将对方法的调用替换为方法的内容,并删除方法本身。 在 PhpStorm 2021.3 中,重构得到了多项改进,并将覆盖更多用例。 例如,现已支持作为形参传递的非静态方法、方法链和箭头/匿名函数。

要使用此重构,请将文本光标置于方法上并按 Ctrl+Alt+N。 如果代码中存在仅使用一次的 private 方法,请按 Alt+Enter 并使用新的 Inline Method(内联方法)快速修复。

Inline Variable

Inline Variable(内联变量)重构使您能够将对变量的引用替换为实际变量的值。 在 PhpStorm 2021.3 中,此重构支持内联 NOWDOC/HEREDOC 变量并包含多项实用性增强。

此外,PhpStorm 现在将能够检测使用一次的变量,并为您提供了可通过 Alt+Enter 应用的 Inline Variable(内联变量)快速修复。

部署

对 rsync 的支持

在使用 SFTP 服务器进行部署时,您可以启用 rsync 来上传和下载文件和文件夹,这将显著提高传输速度。 对应的 Use rsync for download/upload(使用 rsync 进行下载/上传)选项位于部署服务器配置的 Advanced(高级)部分中。

可以在 Settings/Preferences | Tools | Rsync(设置/偏好设置 | 工具 | Rsync)下配置 rsync 可执行文件的路径。 在 macOS 和 Linux 平台上,它将很快可用。 For Windows, it is recommended to use Cygwin and OpenSSH.

重新传输上传失败的文件

PhpStorm 2021.3 支持重新传输上传失败的文件。 在这种情况下,请点击 File Transfer(文件传输)工具窗口中的 Retry(重试)链接。

SSH 连接的代理支持

现在,您可以在 Settings/Preferences | Tools | SSH Configurations(设置/偏好设置 | 工具 | SSH 配置)下为您的 SSH 配置指定 HTTP 或 SOCKS 代理服务器。

也可以使用全局 IDE 范围的代理。 为此,请在 Settings/Preferences | Appearance & Behavior | System Settings | HTTP Proxy(设置/偏好设置 | 外观和行为 | 系统设置 | HTTP 代理)下启用 Use global IDE proxy settings(使用全局 IDE 代理设置)复选框并提供代理详细信息。

快速切换项目的默认服务器

PhpStorm 2021.3 提供了一个可以显示当前默认服务器的新状态栏微件。 当您需要处理多个环境时,您可以直接在微件中切换环境,而无需前往设置。

HTTP 客户端

HTTP 客户端中的二进制响应

HTTP 客户端现已支持二进制响应。 如果收到的响应为图像,您可以直接在响应控制台中查看其预览。

到自定义文件或目录的输出重定向

HTTP 客户端现在可以将输出重定向到自定义文件或目录。 它支持使用两个运算符进行强制重定向和软重定向:

  • >> 运算符会创建一个新文件,如果此类文件已经存在,则会向文件名添加 -n 后缀。
  • >>! 运算符将重写已经存在的文件。

除了提供显式文件路径之外,您现在还可以使用新的预定义变量:{{$projectRoot}} 指向项目根文件夹,{{$historyFolder}} 指向请求历史记录文件夹

对 HTTP 请求标识符的支持

在 PhpStorm 2021.3 中,可以命名您的 HTTP 请求了! 您可以使用 @name 提供标识符作为注释,也可以在请求分隔符 (###) 中提供文本。

然后,您可以从 Run Configuration(运行配置)、Run Anything(运行任何内容)或 Search Everywhere(随处搜索)对话框中通过 Services(服务)工具窗口,按名称调用请求。

用户体验

新的 Bookmarks(书签)工具窗口

在 PhpStorm 2021.3 中,Favorites(收藏夹)和 Bookmarks(书签)功能已合二为一,合并为 Bookmarks(书签)。 您可以按 F11,在特定行、文件或文件夹上添加书签。 添加的所有书签都将在统一的 Bookmarks(书签)工具窗口中可用。

Show Usages(显示用法)的源代码预览

可通过按 Ctrl 并点击符号来调用的 Show Usages(显示用法)对话框现已支持根据找到的用法显示源代码预览。 要启用预览,请点击 Icon of the toolbar button 工具栏按钮。

VCS

Align Changes Highlighting(对齐更改高亮显示)

我们在齿轮图标下的 Diff(差异)屏幕设置中添加了新的 Align Changes Highlighting(对齐更改高亮显示)选项。 此功能可改良 Diff(差异)的易读性,使未更改的行对齐并并排显示,特别适用于复杂修改。 这有助于您更清楚地查看已添加或移除的代码。

远程分支的 Checkout and Rebase onto Current(签出并变基到当前分支)

Checkout and Rebase onto Current(签出并变基到当前分支)操作可用于签出所选分支并将其变基到当前签出分支的顶部。 此操作以前仅适用于本地分支,但在 PhpStorm 2021.3 中,此操作也可以应用于远程分支。

新的“Push All up to Here”(推送此前所有提交)操作

如果您有一些提交准备发布,而其他提交仍在进行中,那么您可能需要仅推送您确定要发布的提交。 PhpStorm 2021.3 将使您可以推送您在 Git 工具窗口的 Log(日志)标签页中所选及其之前的提交。 选择并右键点击所需的提交,然后使用新的 Push All up to Here(推送此前所有提交)操作。

重新组织了 VCS 设置

Settings/Preferences(设置/偏好设置)中的 Version Control(版本控制)页面已经简化以提升实用性,现在会列出所有可用设置。 Git 节点现在被划分为几个部分,对应最重要的流程:Commit(提交)、Push(推送)和 Update(更新)。 为 Directory mappings(目录映射)添加了一个单独的节点。 由于后台操作现在默认开启,Background(后台)节点已被移除。