PhpStorm 2023.1 是一个重大更新,包括与 3v4l.org 的集成、更好的性能、增强的新 UI、适用于 PHP 的 DFA 调试器、对具有多个 composer.json 文件的项目的支持等。
我们在之前的版本中引入了新 UI,但它默认处于禁用状态。 在这个版本中,我们根据反馈和研究改进了新 UI。 下文将介绍部分增强功能。
转到 Preferences / Settings | Appearance & Behavior | New UI(偏好设置/设置 | 外观与行为 | 新 UI)可以启用新 UI。
Compact Mode(紧凑模式)增强了新 UI 在较小显示器上的用户体验。 它使工具栏和工具窗口标题更简洁,缩小了间距、填充、图标和按钮,帮助您专注于代码而不是控件。
要打开 Compact Mode(紧凑模式),请转到 View(视图)菜单并选择 Appearance | Compact Mode(外观 | 紧凑模式)。
当编辑器标签页被隐藏时,当前打开的文件的名称将显示在窗格中。
新 UI 中的这个设置可用于将工具窗口区域拆分为 2 个窗口并进行排列,以便您可以同时看到两个工具窗口。 这是您可以在旧 UI 中执行的操作,但此前在新版本中缺失。
沿边栏将工具窗口图标拖动到分隔符下,即可将工具窗口添加到此区域下方。 或者,您可以右键点击图标,使用 Move to(移至)操作为工具窗口指定新位置。
在同一个窗口中打开多个项目时,macOS 用户现在可以使用主工具栏下显示的项目标签页轻松切换。
在 macOS 中,窗口标签页默认仅在全屏模式下启用。 如需始终启用,可以调整系统偏好设置:
基于有关 IDE 新 UI 的反馈,我们重新设计了主窗口标题中的 Run(运行)微件,使其更加自然悦目。
PhpStorm 2023.1 原生与 3v4l.org 集成,允许您在任何 PHP 版本上运行 PHP 临时文件,而不必在本地机器上安装任何内容。
按 Ctrl+Alt+Shift+Insert创建新的 PHP 临时文件。
从下拉菜单选择所需 PHP 版本,然后按 Run(运行)按钮。 您将在编辑器旁边看到脚本的输出。
如果您觉得 3v4l.org 有用,可以通过以下链接支持其作者: github.com/sponsors/SjonHortensius。
在这个版本中,我们带来了多项重大性能改进。 我们将在后续更新中继续推进。 以下是这个版本中的变化。
某些 PHP 软件包非常流行,在每个 PhpStorm 实例上重新构建其索引毫无意义。 因此,我们为许多流行 PHP 软件包计算了索引,例如 PHPUnit、aws/aws-sdk-php、doctrine/orm、laravel/framework、symfony/* 等。
现在,打开索引的 PHP 项目时,PhpStorm 会检查 composer.json 以了解哪些指定的依赖项具有预构建的共享索引。
PhpStorm 可能会下载索引,也可能在本地重建,具体取决于您的 CPU 和 RAM 是否比网速更快。
您还可以为不公开项目生成您自己的共享索引。 了解如何 在这里 操作。
之前:
之后:
为了提高性能,我们正努力确保在索引编制期间提供尽可能多的操作。
Go to Class(转到类,Ctrl+O 或 Navigate | Class...(导航 | 类…))是最热门的代码导航操作之一。 在这个版本中,它随时可用,包括索引重建期间。 先前,它会显示一个空列表,直到索引完成。
现在,另一个在索引编制期间也可用的操作是注解代码。
这意味着许多错误和软关键字将被 PhpStorm 提前高亮显示,让您的工作流更顺畅、更省时。
IDE 现在打开得更快,因为 PhpStorm 将使用项目在上一个会话中的现有缓存,并查找要建立索引的新文件。 如果扫描后没有发现更改,IDE 将立即准备就绪。
我们提高了所有检查的性能,特别是开销最大的检查。 其中一部分已经提速 30–40%,虽然另一部分性能提升没有如此巨大,但综合效果仍然很明显。 以下视频展示了与先前版本的对比。
我们大幅提升了 @php...@endphp 标记内高亮显示的性能。 现在,无论代码复杂度如何,所有关键字和结构体都可以更快高亮显示。
Windows Defender 的实时保护检查会显著降低 IDE 的速度。 为了避免这种情况,PhpStorm 现在会建议将某些文件夹添加到 Defender 的排除项列表中。
通知提供了自动重新配置这些设置或首先检查 Defender 配置说明并手动执行的选项。
喜欢使用 Xdebug 调试 PHP 应用程序的用户现在可以使用一项更高级的功能,数据流分析 (DFA) 调试器。 它可以让您提前查看永远不会执行的代码分支,无需使用调试器逐步遍历代码。
PhpStorm 会在执行代码之前在右侧内嵌中显示条件的预计算结果。 这让您无需深入挖掘即可了解代码中的情况。 调试会话期间,不会执行的分支将显示为灰色。
如果您在调试期间对这些额外信息不感兴趣,可以右键点击预计算的值内嵌并为当前调试会话关闭 DFA 功能。
在 Preferences/Settings | PHP | Debug | Xdebug(偏好设置/设置 | PHP | 调试 | Xdebug)下可以永久关闭这一功能。
目前,由于技术限制,PhpStorm 不会预计算属性值。 这是未来开发的领域。
所有现有 PHPStan 和 Psalm 标记现在都可以在 PhpStorm 中正确解析。 这使带有大量注解的代码的可读性得到提升。
在此之前,PhpStorm 将每一个打开的项目视为单个空间。 不过,越来越多的情况是同一个项目中有多个应用程序,它们都有自己的 composer.json 依赖项。
我们实现了一个基础来支持这类具有多个 composer.json 文件和 vendor 目录的项目。 这带来了以下增强:
composer.json 中缺少的扩展。 现在,您可以使用正则表达式创建自己的搜索和替换检查。 这些检查对于高亮显示样式或格式问题或简单的代码相关问题特别实用。
转到 Settings/Preferences | Editor | Inspections(设置/偏好设置 | 编辑器 | 检查),按 + 图标。 从列表中选择 Add RegExp Search Inspection(添加正则表达式搜索检查,或 Replace(替换)),在新出现的对话框中即可设置新检查。
对于可能涉及类型层次结构检查的更高级检查,可以使用 Structural Search and Replace (SSR)(结构化搜索和替换(SSR))检查。 在文档中了解详情,或查看视频中的示例。
每个 PhpStorm 版本都带有一系列新的现成检查。 PhpStorm 2023.1 也不例外,值得注意的检查包括:
@final 的重写方法/扩展类 您可以使用关键字 final 标记类,在违规时生成致命错误。 更温和的方式是添加 PHPDoc 标记 @final。
对此,PhpStorm 将高亮显示不正确的继承,但代码在执行期间不会生成错误。
借助 PhpStorm 2023.1 中的新快速修复,您可以为子类中的方法添加兼容的返回值类型,或者在不兼容时做出更改。
断言可被替换为 assertTrue/assertFalse。
嵌套数组访问或对象的多个 isset() 实例可被替换为单个实例。
为从其他文件访问的变量添加 global。
var_dump() / dd() 输出的可点击路径和类引用 我们想为喜欢“dump and die”方式的用户改善调试体验。 作为第一步,我们激活了文件路径和类引用。 点击它们会在编辑器中打开相应的文件。
在之前的 PhpStorm 版本中,我们在日期时间函数中添加了对不同格式的描述。
现在,接受文件模式的任何函数在补全下拉菜单中都具有详细描述。 您再也不必记住 r+、a 和 w 的含义了。
我们引入了更多实时模板,包括用于函数模板的 fun 和用于索引循环的 fori。
现在可以整体放大和缩小 PhpStorm,同时更改所有 UI 元素的大小。 从主菜单中,选择 View | Appearance(视图 | 外观),调整 IDE 的缩放比例。
这可能有助于展示、直播、在线会议或演示。
专属快捷键将使这些操作更易调用。 转到 Search Actions(搜索操作,Ctrl+Shift+A)窗口,输入 zoom ide,按 Alt+Enter 并指定快捷键。
您现在可以保存和管理多个工具窗口布局,并根据需要在它们之间切换。 Window | Layouts(窗口 | 布局)下的新操作可以保存、更新和激活布局。
新的 Remember size for each tool window(记住每个工具窗口的大小)复选框位于 Settings/Preferences | Appearance & Behavior | Tool Windows(设置/偏好设置 | 外观与行为 | 工具窗口)中。 它允许您统一侧面工具窗口的宽度或保留在自定义布局时自由调整其大小的能力。
Markdown 文件现在支持 Fill Paragraph(填充段落)编辑器操作,可将长文本分成等长的行。
为此,将文本光标置于要更改的段落中,然后从 Edit(编辑)菜单选择操作。 您还可以使用 Find Action(查找操作,Ctrl+Shift+A)查找并运行 Fill Paragraph(填充段落)命令。
我们在 Settings/Preferences | Editor | General | Smart Keys(设置/偏好设置 | 编辑器 | 常规 | 智能按键)中添加了一个页面,您可以在其中设置和更改 Markdown 偏好设置。
这个页面为不同的编辑器功能提供了单独的复选框,应该可以使偏好设置更易管理。 先前,Settings/Preferences | Languages & Frameworks(设置/偏好设置 | 语言和框架)中只有一个复选框。
Settings/Preferences | Editor | General | Appearance | Show Whitespaces(设置/偏好设置 | 编辑器 | 常规 | 外观 | 显示空格)中提供了一个新的 Selection(选区)复选框,允许您配置这个设置,让 IDE 仅在选择代码时将空格显示为小点。
在 Structure(结构)工具窗口中,我们为更改添加了颜色提示。
您现在可以查看更改或添加了哪些属性、方法和函数。
分支现在存储在可以展开的列表中,更易浏览。
在 PhpStorm 2023.1 EAP #1 中,我们在 Create New Branch(创建新分支)弹出窗口中实现了自动补全。 为新分支输入名称时,IDE 将根据现有本地分支的名称建议相关前缀。
Git 和 Mercurial 的提交检查现在会在提交之后且推送之前在后台执行。 这应该会加快整个提交过程。
我们的研究发现,使用拉取请求的最常见场景是用户首先访问 GitHub,然后在需要完整浏览代码时使用 IDE。
为了促进这个工作流,我们重做了 Pull Request(拉取请求)工具窗口。 它现在会为您打开的每个拉取请求提供一个专用标签页。 标签页会立即显示已更改文件的列表,但干扰更少。 这让您可以更好地专注于当前任务。
现在,可以通过一个新增的专属按钮轻松执行拉取请求当前状态下最重要的操作。
Docker Compose 节点的 Dashboard(仪表板)标签页现在将来自各个 Docker Compose 容器的日志拉取到一处显示。 它们也会实时更新。
您现在可以轻松连接到 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)可以启用此功能。
我们在 Vue 模板中添加了 TypeScript 支持。 它将在 script 标记中的 lang 特性被设为 ts 时启用。 此前,无论 script 标记中的 lang 特性如何,使用的都是 JavaScript。 PhpStorm 现在将提供对内联转换的支持、改进的类型收窄,并在 Vue 单文件组件模板的快速文档中提供正确的推断类型信息。
在这个版本中,我们添加了对配置选项的支持,例如 classAttributes 选项下的自定义类名补全或 tailwindCSS.experimental.configFile 等实验性选项。
您可以在 Preferences / Settings | Languages & Frameworks | Style Sheets | Tailwind CSS(偏好设置/设置 | 语言和框架 | 样式表 | Tailwind CSS)下设置这些配置选项。
这些是此版本中最重要的变化,当然还有很多。 请查阅 PhpStorm 博客上的公告,查看此版本中增强功能的完整列表。