PhpStorm 2023.3 最新变化

此重大更新的亮点包括:

  • AI Assistant 预览阶段结束
  • Pest 支持
  • PHP 8.3 支持
  • 改进的 Symfony 支持
  • UI 的体验改进

AI Assistant 预览阶段结束 正式版

JetBrains 的 AI Assistant 现已全面推出,搭载大量新功能和改进,助力提高您在 JetBrains IDE 中的工作效率。

基于 LLM 的代码补全

基于 LLM 的代码补全

AI Assistant 现在可以为您生成多行代码块。 在新行开始输入,如果有 LLM 建议,就会出现一个灰显的代码段。 按 Tab 接受建议。

目前,此类建议可在类上下文或函数定义内使用。

测试代码生成

测试代码生成

AI Assistant 还可以为类方法生成测试。 将文本光标置于您希望通过单元测试覆盖的类方法上,按 Alt+Enter,选择 AI Assistant,然后选择 Generate Unit Tests(生成单元测试)。

编辑器内代码生成

编辑器内代码生成

以前,您可以使用 AI 聊天生成代码段。 新增的 AI Assistant | Generate code…(AI Assistant | 生成代码…)操作可以直接在编辑器中打开提示框。 您可以输入要生成的代码的描述。 随后,AI Assistant 将提供建议,您可以接受部分或全部建议。

控制台中基于 AI 的错误解释

控制台中基于 AI 的错误解释

有时,执行 PHP 脚本或运行配置或者运行 Composer 操作时,作业会由于某种原因失败。 AI Assistant 可以帮助您确定问题的根本原因。 点击堆栈跟踪或错误消息中的 Explain with AI(使用 AI 解释)按钮即可获取 AI 生成的解释。

订阅 JetBrains AI Service,在 PhpStorm 中以补充功能的形式使用 AI Assistant。

Pest 更新

PhpStorm now supports the Pest test framework out of the box. We recently agreed with the original author of the Pest plugin to take over its development and bundle it in PhpStorm. You can read the details in our recent blog post.

Pest 测试

就像 PHPUnit 测试一样,Pest 测试现在可以直接从 PhpStorm 运行。 将文本光标放入测试并触发运行窗口时,将为特定测试创建运行配置。 您可以将文本光标置于文件中,而不是具体测试中,以触发该文件中的所有测试。

断言

借助新的 Pest 支持,您可以在 $this 上调用函数或方法来编写断言。 这还改进了测试函数中的自动补全,让您可以在输入时查看可用断言。

自定义期望

在 Pest 中,您可以编写自定义期望来减少测试中的样板检查。 PhpStorm 可以帮助您找到自定义期望的用法并帮助您重命名。

PHP 8.3 支持

PhpStorm 2023.3 完全支持 PHP 8.3。 IDE 中的大部分更改都将有机集成到您的 PhpStorm 工作流中,几乎不会引起波动,因此我们只会提及您需要了解的新功能。

Override 特性

#[\Override] 特性

PHP 8.3 引入了新的 #[\Override] 特性。 重写方法时,它可以明确显示您的意图。 PHP 引擎能够检查标有 #[\Override] 的方法是否实际上重写了父方法,如果未重写,则抛出异常。 PhpStorm 2023.3 会提前发出有关此类情况的警告。

添加 Override 特性建议

PhpStorm 还建议在适用时添加 #[\Override] 特性。

json_validate() 函数 json_validate() 函数

新的 json_validate() 函数

PHP 8.3 向标准库添加了新的 json_validate() 函数。 此前,验证字符串是否为有效 JSON 的唯一方式是对其进行解码并检测是否抛出错误。 PhpStorm 可以检测这些模式,并建议通过 json_validate() 函数调用替换。 与解码字符串相比,它使用的内存更少,因此有助于确认输入是否为有效 JSON。

类型化类常量

类型化类常量

在 PHP 8.3 中,您可以声明类常量的类型。 除 voidcallablenever 之外的所有类型声明都可以使用。

对于类型化类常量,PhpStorm 提供:

  • 插入适当类型的建议
  • 类型提示补全
  • 与默认值类型的兼容性检查
  • 重写子类中的常量时进行类型重新声明检查
弃用 弃用

弃用

PHP 8.3 弃用了一定内容,PhpStorm 为您提供了相应的检查来发现它们。

Symfony 支持

PhpStorm 2023.3 为 Symfony 开发者带来了多项改进。

New Project(新建项目)向导

New Project(新建项目)向导

适用于 Symfony 的新内置项目初始化程序允许您直接从欢迎屏幕新建具有所需类型和版本的 Symfony 项目。

QueryBuilder 中的 Doctrine 查询语言支持

QueryBuilder 中的 Doctrine 查询语言支持

现在,您可以在 QueryBuilder 方法调用中享受对 DQL 的完整 IDE 支持。 功能包括高亮显示、字段补全、目标模型类解析等。

为 Symfony 和 Doctrine 将注解转换为特性

为 Symfony 和 Doctrine 将注解转换为特性

Following the introduction of attributes in PHP 8.0, Doctrine annotations are being deprecated and will soon be removed. 为了帮助您进行切换,PhpStorm 2023.3 包含了将 Doctrine 注解转换为特性的功能。

PhpStorm 还支持将 Symfony 注解转换为其对应特性,例如 #[Required]#[Route] 等。

针对 PHP 的其他更新

从项目排除外部库文件的选项

从项目排除外部库文件的选项

我们添加了排除来自索引库的目录的实验性新功能。 从项目中排除此类文件有助于避免多重定义问题和提高索引性能。

泛型类型的专属样式

泛型类型的专属样式

我们持续改进泛型的使用体验。 在 PhpStorm 2023.3 中,现在可以为泛型设置颜色编码,使泛型类型更易区分。

折叠多行 PHP 特性的功能

折叠多行 PHP 特性的功能

随着特性采用的增加,有时会难以阅读来自给定框架的带有长多行特性注解的代码。 在 PhpStorm 2023.3 中,这应该不再是问题,您现在可以折叠多行特性。

从 PHPDoc 到特性的 PHPUnit 元数据转换

从 PHPDoc 到特性的 PHPUnit 元数据转换

PHPUnit 10 introduced support for attributes for adding metadata to test classes and test methods, as well as tested code units. 我们已经实现了检查和快速修复,帮助您从旧的 PHPDoc 注解迁移到这种新样式。

版本控制系统

全功能差异查看器

PhpStorm 2023.3 引入了一种改进的更改审查方式。 现在,您可以在单个可滚动框架中查看来自更改集的所有已修改文件,无需逐一查看每个文件。 新的差异查看器可从 Git Log(Git 日志)工具窗口访问,目前可与 JetBrains Space 审查配合使用。 我们正在研究使其与 GitLab 和 GitHub 兼容。

调试器

调试器

PhpStorm 2023.3 的新 Run to Cursor(运行到光标)嵌入选项允许您在调试时快速执行到特定代码行。 程序挂起后,您可以将鼠标悬停在要执行到的代码行上,然后使用 Run to Cursor(运行到光标)弹出窗口。 将文本光标置于所需行上后调用键盘快捷键 Alt + F9 也可以实现相同的效果。

用户界面

在默认查看模式下隐藏主工具栏的选项

在默认查看模式下隐藏主工具栏的选项

为了响应大家对新 UI 的反馈,使用 IDE 的默认查看模式时主工具栏现在可以隐藏,与旧 UI 相同。 要移除工具栏,首先选择 View | Appearance(视图 | 外观),然后取消选中 Toolbar(工具栏)选项。

还原到默认工具窗口布局的选项

还原到默认工具窗口布局的选项

随着 PhpStorm 2023.1 的发布,我们引入了保存多个工具窗口布局并在它们之间切换的功能,增强了工作区的可自定义程度。 在 PhpStorm 2023.3 中,我们通过引入 Default layout(默认布局)选项扩展了此功能,提供了将工作区的外观还原为默认状态的快速方式。 此布局不可自定义,位于 Window | Layouts(窗口 | 布局)下。

默认颜色编码编辑器标签页

默认颜色编码编辑器标签页

为了使同时在编辑器中处理多种文件类型更为轻松,我们为编辑器标签页默认引入颜色编码,反映其在 Project(项目)工具窗口中的外观。

TypeScript改进

TypeScript改进

PhpStorm 包含 WebStorm 功能,现已解决添加 import type 语句时出现的不一致,并使 verbatimModuleSyntax 更易用。 我们添加了用于配置 TypeScript import type 语句类型的选项。 我们还为 TypeScript 文件改进了 package.jsonexports 字段的行为。

HTML 到 JSX 单一标记闭合

HTML 更新

现在,将 HTML 代码粘贴到 JSX 文件中时,PhpStorm 不仅将转换特性,还会自动为您关闭单个标记。 您可以在 Settings | Editor | General | Smart Keys | JavaScript(设置 | 编辑器 | 常规 | 智能按键 | JavaScript)下配置此选项。

CSS 自定义 @property 支持

CSS 增强功能

To support the new @property API for creating custom CSS properties, PhpStorm 2023.3 now offers inspections and completion features for explicitly defining CSS custom properties, allowing you to check and restrict property types, establish default values, and determine inheritance possibilities for custom properties.

针对 Vue 3 的改进

针对 Vue 3 的改进

我们添加了对 defineSlots 的支持,为 slot 名称提供补全和导航,以及 Rename(重命名)重构。 我们还通过 defineExpose 为属性引入补全支持。 在 PhpStorm 2023.3 中,组件需要的 import 将根据 defineOptions 函数指定的名称添加。