PhpStorm 2024.3 最新变化

此版本的亮点包括:

  • PHP 8.4 支持
  • AI Assistant 改进
  • xdebug_notify() 支持
  • Laravel Herd 的 PHP 解释器

PHP 8.4 支持

PhpStorm 2024.3 包含新的检查和快速修复,可以帮助您轻松升级到功能丰富的 PHP 8.4。 下面简要介绍了在 PhpStorm 工作流中如何支持 PHP 8.4 的新功能。

属性挂钩

作为现代 PHP 语言中最大的变化之一,属性挂钩允许您通过为属性实现 getset 挂钩来消除样板 getter 和 setter。

对于属性挂钩(包括提升属性中的属性挂钩),PhpStorm 提供:

  • 将 getter 和 setter 替换为 getset 属性挂钩的快速修复。
  • 为属性添加属性挂钩的意图操作。
  • 通过插入属性挂钩体来补全 getset 关键字的代码补全。
  • 通过与 Generate | Getters and Setters( 生成 | Getter 和 Setter)类似的 Generate action(生成操作)为属性生成 getset 挂钩的功能。
  • 自动检测可以转换为简写符号的属性挂钩,并提供转换的快速修复。
  • 用于确保正确使用属性挂钩语法和逻辑的检查。

非对称可见性

非对称可见性允许为读取和写入操作分别定义类型属性的可见性。

PhpStorm 2024.3 通过提供以下检查和快速修复,帮助确保在代码中正确实现非对称可见性作用域:

  • 冗余的非对称可见性修饰符。
  • 使属性的 set 可见性作用域比主 (get) 可见性作用域更广的试图。
  • private (set) 属性的冗余 final 修饰符。
  • 缩小继承属性中的属性可见性的试图。
  • set 可见性作用域之外修改非对称可见性属性的试图。

新的数组函数

您可以使用 PhpStorm 2024.3 将 foreach 循环转换为新添加的 array_find()array_find_key()array_any()array_all() PHP 8.4 函数。

不带圆括号的 new

PhpStorm 2024.3 支持在 (new MyClass())->method() 类型的构造中去掉 new 表达式周围的圆括号。

AI Assistant  插件

请注意:只有 AI Pro 订阅或试用版支持 AI Assistant 功能。

JetBrains 的 PHP 新代码补全模型

我们已针对 PHP 大大提高 AI 代码补全的质量,并缩短了延迟。 这些增强功能由 Mellum 提供支持,Mellum 是 JetBrains 新推出的专有大语言模型 (LLM),可以实现更快、更智能、更能感知上下文的云代码补全。

有关 JetBrains 新 LLM 的更多信息,请参阅这篇博文

针对建议代码的语法高亮显示

内联代码补全建议现在带有语法高亮显示,有助于提高可读性。

逐步接受代码建议

多行代码建议现在可以一次性接受(按 Tab),也可以逐字(Ctrl+→)或逐行(End)递增接受。

内联 AI 提示

借助新的内联 AI 提示,AI Assistant 现在可以在您输入请求时直接在编辑器中检测并处理自然语言请求。 它可以立即解释请求并生成建议代码,无需完成任何额外步骤。

PhpStorm 会在 AI Assistant 更改的行旁边的装订区域中留下紫色标记,让您可以轻松查看更新的内容。 如果不喜欢某个建议,您还可以点击装订区域中的紫色块或按 Ctrl+/ 来调整初始提示

改进的上下文管理

在此更新中,对于 AI Assistant 在建议中考虑的上下文,我们使其管理更加透明和直观。 改进的 UI 可让您查看和管理作为上下文包含的每个元素,提供完全的可见性和控制。 现在,打开的文件以及其中选择的代码都会自动添加到上下文中,您可以根据需要轻松添加或移除文件,自定义上下文以适合您的工作流。 此外,您还可以附加项目范围的指令来指导 AI Assistant 在整个代码库中的响应。

拉取与合并请求的标题和描述生成

现在,AI Assistant 可以帮助您直接从 IDE 为拉取与合并请求生成准确的标题和描述,从而简化您的工作流并确保您的描述清晰直观。

通过 AI Assistant 进行的 SQL 错误处理

在错误消息区域中,可以通过一些新操作使用 AI Assistant 处理 SQL 查询执行错误。 Explain with AI(使用 AI 解释)会打开 AI 聊天,自动发送提示,然后 AI Assistant 将做出响应并解释错误。 Fix with AI(使用 AI 修正)会在编辑器中为查询执行错误生成修正。

阅读有关 JetBrains AI Assistant 所有更新的信息。

调试

xdebug_notify() 支持

为了进一步增强 PHP 调试体验,PhpStorm 现在提供了一种结构化的方式来处理从 xdebug_notify() 函数发送的输出。

在 Xdebug 3.1 中引入的 xdebug_notify() 调用允许您选择性地将变量输出到 PhpStorm 的调试控制台。

Laravel 生态系统

PhpStorm 中的 Laravel Herd PHP 解释器

对于使用 Laravel Herd 的 Laravel 开发者,PhpStorm 2024.3 现在可以自动检测您的计算机上当前使用的 Laravel Herd PHP 可执行文件的路径。 要在 PhpStorm 中使用此解释器,请转到 CLI 解释器设置(PHP | CLI interpreter | (PHP | CLI 解释器 | …)),并在打开的 CLI Interpreters(CLI 解释器)对话框中,从预配置选项列表中选择 PHP 可执行文件。

Pest 框架改进

PhpStorm 2024.3 显著改善了 Laravel 开发者的 Pest 测试框架体验。 我们已经实现了对 Pest 3.0 的全面支持,并且能够直接在 IDE 中使用 Pest 运行并行和变异测试。

使用 Pest 3.0 进行变异测试

最近发布的 Pest 3.0 引入了变异测试,该测试会对代码进行微小更改以跟踪测试是否能够捕获这些更改。

您可以在 PhpStorm 2024.3 中跟其他测试选项一样直接从编辑器、Project(项目)工具窗口或通过运行/调试配置触发 Pest 的 Run Tests (Pest) with Mutation(运行变异测试(Pest))选项,并使用专用的 Pest Mutation(Pest 变异)工具窗口检查测试结果。

只需确保您的 IDE 中使用的 PHP 解释器也安装了 Xdebug 3.0+

有关详情,请参阅 PhpStorm 文档

使用 Pest 进行并行测试

在 PhpStorm 2024.3 中,您不再需要切换到终端即可在并行模式下运行 Pest 测试。 您可以导航至测试文件,然后从编辑器内的装订区域图标、Project(项目)工具窗口中的上下文菜单或运行/调试配置中选择Run Tests (Pest) in Parallel(并行运行测试(Pest))。

版本控制系统

解决 import 语句合并冲突

PhpStorm 现在可以自动解决 import 语句中的合并冲突。 要启用此功能,在齿轮符号下的合并对话框中选择 Resolve conflicts in import statements(解决 import 语句中的冲突)选项,或转到 Settings | Tools | Diff & Merge (设置 | 工具 | 差异与合并)并选择 Automatically resolve conflicts in import statements(自动解决 import 语句中的冲突)。

Find in Files(在文件中查找)的更新

Find in Files(在文件中查找)功能得到增强,增加了新的搜索范围 Project Files Excluding Git-Ignored(项目文件,不包括 Git 忽略的文件)。 此选项将从搜索结果中排除 .gitignore 文件中忽略的任意文件,帮助您在项目中搜索时只关注相关代码。

禁用后台预提交检查的选项

现在,您可以使用 Settings | Version Control | Commit(设置 | 版本控制 | 提交)下的新选项 Run advanced checks after a commit is done(提交完成后运行高级检查)在提交过程中管理后台检查。 通过此设置,您可以决定是否在提交后运行测试和检查。 如果您希望在提交之前完成这些检查,将其禁用即可。

Welcome(欢迎)屏幕上的分支名称

Welcome(欢迎)屏幕现在会显示分支名称,帮助您在处理多个项目版本时保持整齐,并在工作目录之间轻松切换。

数据库工具

MySQL 和 MariaDB 的片段内省和智能刷新

PhpStorm 现在支持片段内省。 此前,内省器只能对 MySQL 或 MariaDB 数据库中的架构执行完整内省,但不能刷新单个对象的元数据。 每次 DDL 语句在控制台中执行并且该执行可能修改数据库架构中的对象时,IDE 都会启动对整个架构的全面内省。 这非常耗时,并且经常会扰乱工作流。

现在,PhpStorm 可以分析 DDL 语句,确定哪些对象可能受其影响并仅刷新这些对象。 如果您在 Database Explorer(数据库资源管理器)中选择单个条目并调用 Refresh(刷新)操作,则只有一个对象会被刷新,而不是像以前一样整个架构都被刷新。

针对 JOIN 子句数量是否过多的检查

在某些情况下,不建议运行包含过多 JOIN 子句的查询,因为这会降低性能。 编辑器现在可以识别并高亮显示此类查询。 您可以在 IDE 设置中启用此检查。 为此,导航到 Editor | Inspections(编辑器 | 检查),展开 SQL 部分,然后选择 Excessive JOIN count(JOIN 计数过多)。

浮动分页工具栏

为了使数据编辑器中的网格分页更加明显,我们将控件从工具栏移动到数据编辑器的底部中心。

前端

更清晰的目录搜索结果

现在,在项目目录中使用 Find in Files(在文件中查找)时,PhpStorm 会默认排除 node_modules 结果,减少无关文件造成的混乱。 您可以通过启用 Settings | Advanced Settings(设置 | 高级设置)下的 Search in library files when “Directory” is selected in Find in Files(在“在文件中查找”中选择“目录”时,在库文件中搜索)选项来恢复先前的行为。

改进的框架组件导航和重命名

我们增强了针对 Vue、Svelte 和 Astro 组件的编辑器内提示。 Show component usages(显示组件用法)操作现在可以在 import 和标记模板中查找用法。 我们还添加了 Show Component Usages(显示组件用法)筛选器,以便在搜索常规文件引用时排除组件用法。 Rename(重命名)重构也已更新,现在可以在重命名组件文件时包含用法

Tailwind CSS 类的颜色预览

现在,编辑器中会以内联方式显示 Tailwind CSS 类的颜色预览,这样可以更轻松地区分颜色。 我们添加了对语言服务器协议 (LSP) 的 textDocument/documentColor 方法的支持,因此所有基于 LSP 的插件现在都直接提供此功能。

针对 Angular 的改进

对于采用 Angular 19 的项目,PhpStorm 现在对组件、指令和管道默认为独立模式。 新增了一些快速修复来帮助在独立和非独立组件之间转换。 未使用的独立 import 可以在代码重新格式重新设置期间或通过新检查自动移除。 @let 语法支持也得到改进。

UI

高亮显示所选文本的所有匹配项

PhpStorm 现在默认自动高亮显示您在文件中选择的文本的所有实例。 这使得跟踪所选文本在整个代码中出现的位置更加简单。 如果您更喜欢此前的行为,您可以在 Settings | Editor | General | Appearance(设置 | 编辑器 | 常规 | 外观)中禁用此功能。