PhpStorm 2023.1 最新变化

PhpStorm 2023.1 是一个重大更新,包括与 3v4l.org 的集成、更好的性能、增强的新 UI、适用于 PHP 的 DFA 调试器、对具有多个 composer.json 文件的项目的支持等。

新 UI 测试版

我们在之前的版本中引入了新 UI,但它默认处于禁用状态。 在这个版本中,我们根据反馈和研究改进了新 UI。 下文将介绍部分增强功能。

转到 Preferences / Settings | Appearance & Behavior | New UI(偏好设置/设置 | 外观与行为 | 新 UI)可以启用新 UI。

紧凑模式

Compact Mode(紧凑模式)增强了新 UI 在较小显示器上的用户体验。 它使工具栏和工具窗口标题更简洁,缩小了间距、填充、图标和按钮,帮助您专注于代码而不是控件。

要打开 Compact Mode(紧凑模式),请转到 View(视图)菜单并选择 Appearance | Compact Mode(外观 | 紧凑模式)。

当标签页在新 UI 中隐藏时可见的文件名窗格

当编辑器标签页被隐藏时,当前打开的文件的名称将显示在窗格中。

工具窗口的垂直拆分

新 UI 中的这个设置可用于将工具窗口区域拆分为 2 个窗口并进行排列,以便您可以同时看到两个工具窗口。 这是您可以在旧 UI 中执行的操作,但此前在新版本中缺失。

沿边栏将工具窗口图标拖动到分隔符下,即可将工具窗口添加到此区域下方。 或者,您可以右键点击图标,使用 Move to(移至)操作为工具窗口指定新位置。

macOS 上新 UI 中的项目标签页

在同一个窗口中打开多个项目时,macOS 用户现在可以使用主工具栏下显示的项目标签页轻松切换。

在 macOS 中,窗口标签页默认仅在全屏模式下启用。 如需始终启用,可以调整系统偏好设置:

针对新 UI 重新设计了 Run(运行)微件

基于有关 IDE 新 UI 的反馈,我们重新设计了主窗口标题中的 Run(运行)微件,使其更加自然悦目。

PHP

在 3v4l.org 上运行 PHP 临时文件

PhpStorm 2023.1 natively integrates with 3v4l.org and allows you to run PHP scratch files on any desired PHP version without installing anything on your local machine.

Ctrl+Alt+Shift+Insert创建新的 PHP 临时文件。

从下拉菜单选择所需 PHP 版本,然后按 Run(运行)按钮。 您将在编辑器旁边看到脚本的输出。

If you find 3v4l.org useful, consider supporting its author with a donation here: github.com/sponsors/SjonHortensius.

性能改进

在这个版本中,我们带来了多项重大性能改进。 我们将在后续更新中继续推进。 以下是这个版本中的变化。

流行 PHP 软件包的共享索引

某些 PHP 软件包非常流行,在每个 PhpStorm 实例上重新构建其索引毫无意义。 因此,我们为许多流行 PHP 软件包计算了索引,例如 PHPUnitaws/aws-sdk-phpdoctrine/ormlaravel/frameworksymfony/* 等。

现在,打开索引的 PHP 项目时,PhpStorm 会检查 composer.json 以了解哪些指定的依赖项具有预构建的共享索引。

PhpStorm 可能会下载索引,也可能在本地重建,具体取决于您的 CPU 和 RAM 是否比网速更快。

您还可以为不公开项目生成您自己的共享索引。 在此处详细了解如何操作。

之前:

之后:

索引编制期间可用的 Go to Class(转到类)操作

为了提高性能,我们正努力确保在索引编制期间提供尽可能多的操作。

Go to Class(转到类,Ctrl+ONavigate | Class...(导航 | 类…))是最热门的代码导航操作之一。 在这个版本中,它随时可用,包括索引重建期间。 先前,它会显示一个空列表,直到索引完成。

注解器在索引编制期间运行

现在,另一个在索引编制期间也可用的操作是注解代码。

这意味着许多错误和软关键字将被 PhpStorm 提前高亮显示,让您的工作流更顺畅、更省时。

Scanning files to index(正在扫描要建立索引的文件)更加智能

IDE 现在打开得更快,因为 PhpStorm 将使用项目在上一个会话中的现有缓存,并查找要建立索引的新文件。 如果扫描后没有发现更改,IDE 将立即准备就绪。

更快的检查

我们提高了所有检查的性能,特别是开销最大的检查。 其中一部分已经提速 30–40%,虽然另一部分性能提升没有如此巨大,但综合效果仍然很明显。 以下视频展示了与先前版本的对比。

Blade 模板

我们大幅提升了 @php...@endphp 标记内高亮显示的性能。 现在,无论代码复杂度如何,所有关键字和结构体都可以更快高亮显示。

重新配置 Windows Defender 设置以获得更好性能的新 IDE 建议

Windows Defender 的实时保护检查会显著降低 IDE 的速度。 为了避免这种情况,PhpStorm 现在会建议将某些文件夹添加到 Defender 的排除项列表中。

通知提供了自动重新配置这些设置或首先检查 Defender 配置说明并手动执行的选项。

数据流分析调试器

喜欢使用 Xdebug 调试 PHP 应用程序的用户现在可以使用一项更高级的功能,数据流分析 (DFA) 调试器。 它可以让您提前查看永远不会执行的代码分支,无需使用调试器逐步遍历代码。

PhpStorm 会在执行代码之前在右侧内嵌中显示条件的预计算结果。 这让您无需深入挖掘即可了解代码中的情况。 调试会话期间,不会执行的分支将显示为灰色。

调试期间关闭 DFA

如果您在调试期间对这些额外信息不感兴趣,可以右键点击预计算的值内嵌并为当前调试会话关闭 DFA 功能。

Preferences/Settings | PHP | Debug | Xdebug(偏好设置/设置 | PHP | 调试 | Xdebug)下可以永久关闭这一功能。

限制

目前,由于技术限制,PhpStorm 不会预计算属性值。 这是未来开发的领域。

对所有 PHPStan 和 Psalm 标记的支持

所有现有 PHPStan 和 Psalm 标记现在都可以在 PhpStorm 中正确解析。 这使带有大量注解的代码的可读性得到提升。

对多 composer 和多 vendor 项目的支持

在此之前,PhpStorm 将每一个打开的项目视为单个空间。 不过,越来越多的情况是同一个项目中有多个应用程序,它们都有自己的 composer.json 依赖项。

我们实现了一个基础来支持这类具有多个 composer.json 文件和 vendor 目录的项目。 这带来了以下增强:

  • 正确设置排除的目录 – 这提高了整体性能,因为运行的分析和检查更少。 它还使多重解析更加稳定。
  • 正确检测到 PSR 根 – 在项目中的应用程序之间拖放类时,Move Class(移动类)等重构可以正常工作。
  • 每个应用程序都正确报告 composer.json 中缺少的扩展。

新检查

自定义基于正则表达式的搜索和替换检查

现在,您可以使用正则表达式创建自己的搜索和替换检查。 这些检查对于高亮显示样式或格式问题或简单的代码相关问题特别实用。

转到 Settings/Preferences | Editor | Inspections(设置/偏好设置 | 编辑器 | 检查),按 + 图标。 从列表中选择 Add RegExp Search Inspection(添加正则表达式搜索检查,或 Replace(替换)),在新出现的对话框中即可设置新检查。

对于可能涉及类型层次结构检查的更高级检查,可以使用 Structural Search and Replace (SSR)(结构化搜索和替换(SSR))检查。 Learn more about them in the docs, or check out the example in the video.

内置 PHP 检查

每个 PhpStorm 版本都带有一系列新的现成检查。 PhpStorm 2023.1 也不例外,值得注意的检查包括:

被标记为 @final 的重写方法/扩展类

您可以使用关键字 final 标记类,在违规时生成致命错误。 更温和的方式是添加 PHPDoc 标记 @final

对此,PhpStorm 将高亮显示不正确的继承,但代码在执行期间不会生成错误。

不兼容的返回值类型

借助 PhpStorm 2023.1 中的新快速修复,您可以为子类中的方法添加兼容的返回值类型,或者在不兼容时做出更改。

断言可被替换为 assertTrue/assertFalse

嵌套数组访问或对象的多个 isset() 实例可被替换为单个实例。

为从其他文件访问的变量添加 global

针对 PHP 的体验改进

终端中 var_dump() / dd() 输出的可点击路径和类引用

我们想为喜欢“dump and die”方式的用户改善调试体验。 作为第一步,我们激活了文件路径和类引用。 点击它们会在编辑器中打开相应的文件。

补全弹出窗口中文件打开模式的描述

在之前的 PhpStorm 版本中,我们在日期时间函数中添加了对不同格式的描述。

现在,接受文件模式的任何函数在补全下拉菜单中都具有详细描述。 您再也不必记住 r+aw 的含义了。

更多实时模板

我们引入了更多实时模板,包括用于函数模板的 fun 和用于索引循环的 fori

用户体验

全 IDE 缩放

现在可以整体放大和缩小 PhpStorm,同时更改所有 UI 元素的大小。 从主菜单中,选择 View | Appearance(视图 | 外观),调整 IDE 的缩放比例。

这可能有助于展示、直播、在线会议或演示。

专属快捷键将使这些操作更易调用。 转到 Search Actions(搜索操作,Ctrl+Shift+A)窗口,输入 zoom ide,按 Alt+Enter 并指定快捷键。

保存多个工具窗口布局的选项

您现在可以保存和管理多个工具窗口布局,并根据需要在它们之间切换。 Window | Layouts(窗口 | 布局)下的新操作可以保存、更新和激活布局。

新的 Remember size for each tool window(记住每个工具窗口的大小)设置

新的 Remember size for each tool window(记住每个工具窗口的大小)复选框位于 Settings/Preferences | Appearance & Behavior | Tool Windows(设置/偏好设置 | 外观与行为 | 工具窗口)中。 它允许您统一侧面工具窗口的宽度或保留在自定义布局时自由调整其大小的能力。

编辑器

Markdown 文件的 Fill Paragraph(填充段落)

Markdown 文件现在支持 Fill Paragraph(填充段落)编辑器操作,可将长文本分成等长的行。

为此,将文本光标置于要更改的段落中,然后从 Edit(编辑)菜单选择操作。 您还可以使用 Find Action(查找操作,Ctrl+Shift+A)查找并运行 Fill Paragraph(填充段落)命令。

Markdown 的新 Smart Keys(智能按键)设置页面

我们在 Settings/Preferences | Editor | General | Smart Keys(设置/偏好设置 | 编辑器 | 常规 | 智能按键)中添加了一个页面,您可以在其中设置和更改 Markdown 偏好设置。

这个页面为不同的编辑器功能提供了单独的复选框,应该可以使偏好设置更易管理。 先前,Settings/Preferences | Languages & Frameworks(设置/偏好设置 | 语言和框架)中只有一个复选框。

仅显示所选代码中空格的选项

Settings/Preferences | Editor | General | Appearance | Show Whitespaces(设置/偏好设置 | 编辑器 | 常规 | 外观 | 显示空格)中提供了一个新的 Selection(选区)复选框,允许您配置这个设置,让 IDE 仅在选择代码时将空格显示为小点。

VCS / Git / GitHub

Structure(结构)工具窗口中的 VCS 状态颜色提示

Structure(结构)工具窗口中,我们为更改添加了颜色提示。

您现在可以查看更改或添加了哪些属性、方法和函数。

改进了 Branches(分支)弹出窗口

分支现在存储在可以展开的列表中,更易浏览。

Create New Branch(创建新分支)弹出窗口中的自动补全

在 PhpStorm 2023.1 EAP #1 中,我们在 Create New Branch(创建新分支)弹出窗口中实现了自动补全。 为新分支输入名称时,IDE 将根据现有本地分支的名称建议相关前缀。

后台提交检查

Git 和 Mercurial 的提交检查现在会在提交之后且推送之前在后台执行。 这应该会加快整个提交过程。

针对 GitHub 改进了代码审查工作流

我们的研究发现,使用拉取请求的最常见场景是用户首先访问 GitHub,然后在需要完整浏览代码时使用 IDE。

为了促进这个工作流,我们重做了 Pull Request(拉取请求)工具窗口。 它现在会为您打开的每个拉取请求提供一个专用标签页。 标签页会立即显示已更改文件的列表,但干扰更少。 这让您可以更好地专注于当前任务。

现在,可以通过一个新增的专属按钮轻松执行拉取请求当前状态下最重要的操作。

Docker 改进

来自所有 Docker Compose 容器的合并日志

Docker Compose 节点的 Dashboard(仪表板)标签页现在将来自各个 Docker Compose 容器的日志拉取到一处显示。 它们也会实时更新。

对 Azure 容器注册表的支持

您现在可以轻松连接到 Azure 容器注册表。 转到 Preferences / Settings | Build, Execution, Deployment | Docker | Docker Registry(偏好设置/设置 | 构建、执行、部署 | Docker | Docker 注册表),在 Registry(注册表)输入字段中选择 Docker V2 进行设置。

应用 :z 装载选项以在 SELinux 上绑定卷的新设置

您现在可以将 :z 配置标志添加到 Docker 绑定装载,从而将卷连接到 SELinux 工作站上的 Docker 容器。

转到 Preferences / Settings | Advanced Settings | Docker(偏好设置/设置 | 高级设置 | Docker)可以启用此功能。

Web

Astro 支持

Long-awaited Astro support has landed in PhpStorm! 从 Preferences / Settings | Plugins(偏好设置/设置 | 插件)安装新的 Astro 插件即可获取。 插件提供基本功能,包括语法高亮显示、带自动导入的代码补全、重构、导航、正确的格式设置等。

Vue 模板中对 TypeScript 的支持

我们在 Vue 模板中添加了 TypeScript 支持。 它将在 script 标记中的 lang 特性被设为 ts 时启用。 此前,无论 script 标记中的 lang 特性如何,使用的都是 JavaScript。 PhpStorm 现在将提供对内联转换的支持、改进的类型缩小,并在 Vue 单文件组件模板的快速文档中提供正确的推断类型信息。

Tailwind CSS 配置

在这个版本中,我们添加了对配置选项的支持,例如 classAttributes 选项下的自定义类名补全或 tailwindCSS.experimental.configFile 等实验性选项。

您可以在 Preferences / Settings | Languages & Frameworks | Style Sheets | Tailwind CSS(偏好设置/设置 | 语言和框架 | 样式表 | Tailwind CSS)下设置这些配置选项。


这些是此版本中最重要的变化,当然还有很多。 请查阅 PhpStorm 博客上的公告,查看此版本中增强功能的完整列表。