PhpStorm 2019.3 已发布:全面的 PHP 7.4 支持,PSR-12,WSL,MongoDB 等等!
开发工具
PhpStorm 2019.3 已发布:全面的 PHP 7.4 支持,PSR-12,WSL,MongoDB 等等!

Lei
PhpStorm 2019.3 已正式推出!

这个主要版本集中在性能和质量上,期望有一个更稳定、更快的IDE。主要变化包括:PHP 7.4 支持、PSR-12 代码样式、适用于远程解释器的 WSL、MongoDB 支持、HTTP 客户端更新、更快的 IDE 启动、更好的性能、以及许多实用性改进。
立即下载 PHPSTORM 2019.3
在本篇博客中,我们将详细概述此新版本的所有更改和内容。本文将我们过去几个月在这里发布的所有 EAP 博文进行了综合,以及许多其他尚未涵盖的补充。请准备好,我们有大量的 GIF 给您介绍新功能!
性能和质量
每次发布时,我们都会花费大量时间来提高性能和质量。但是对于此版本,我们更进一步举办了一场全面的“质量马拉松”。在此期间 IntelliJ IDEA 团队专门致力于优化此 IDE 并进行性能改进。我们已经取得了以下成果:
更快的 IDE 启动速度
更好的 UI 响应能力
减小了内存消耗
根据您的平台,您应该看到更快的 IDE 加载速度。因为我们并行化了一些按顺序运行的进程,所以我们以一种使初始类加载更快重新组织了类。我们解决了导致 1600 多份报告中提到的 UI 冻结的许多问题。
版本控制子系统中也有性能优化。我们已经改进了事件处理和忽略文件的处理。
在大型项目中,冻结更少,状态更新更快。我们计划继续努力,您可以期待在下一个版本中获得更快的启动速度和更多优化。
PHP 7.4
PHP 7.4 现已发布!这版本又很多炫酷的新功能。查看最新功能,全部都在 PhpStorm 2019.3 中受支持。
类型属性
这应该是 PHP 7.4 最令人期待的功能。 PhpStorm 自 2019.2 版本后开始支持。 让我们再来看看它,因为在此版本中,我们已修复了一些问题并涵盖了一些临界情况。
首先,PhpStorm 当然会高亮显示类型违规:

您很有可能希望快速为属性添加类型声明。这应该很快,因为 PhpStorm 可以根据 PHPDoc 、默认值或在将值注入到构造函数中时定义的类型来检测现有属性的类型。
无论如何,您可以在没有类型的属性上按

Alt + Enter,然后选择 Add declared type for the field,这样就完成了。

箭头函数
如果您在主体中有只有一条语句的匿名函数,在PHP 7.4中,现在可以将其转换为短箭头函数:

并且无需编写 部分,因为它具有外部作用域变量的自动按值绑定:

在匿名函数上按

Alt + Enter<1>,然后选择 Convert closure to arrow function。

数值文字分隔符
您现在可以在数字中的任何位置添加下划线符号,以格式化它们。在任何数字上按

Alt + Enter 并应用 Add number separators。 对于十进制数字,每 3 位数字添加一个下划线 ‘_‘ ;对于十六进制、二进制和八进制,每 4 位数字添加一个下划线。

嵌套三元运算符
几乎所有的编程语言都从右到左计算三元运算符。PHP 的做法有所不同,这违反直觉,并可能导致错误。PHP 7.4 弃用了嵌套.这意味着您应完全不使用嵌套三元运算符,或者如果您必须使用,则应使用括号来明确地声明计算的顺序。
PhpStorm 2019.3 高亮显示弃用的表达式并为您提供快速修复 (Alt+Enter)以阐明行为。

新的序列化机制
由于现有序列化的问题无法解决,PHP 核心团队决定引入两个新的魔术方法 和 。 PhpStorm 将帮助您在代码中查找到这些方法的用例:

协变返回和逆变参数
PHP 7.4 修复了多个不一致,其中之一与类型系统有关。在处理从父类继承的方法时,您现在可以定义更加具体的返回类型和不那么具体的参数类型。

弃用
PHP 更新的好处是它不仅添加新功能,而且还淘汰旧功能,从而使语言更简洁,使用起来更愉快。PHP 7.4 版本附带了许多弃用。
PhpStorm 2019.3 会高亮显示您需要注意的代码段。如果可能,您会看到一个可以自动快速修复弃用行为的选项。


⚠️随着 PHP 7.4 的发布,旧版本的 PHP 将会被废弃。PHP 7.2 还会继续进行一年的安全修复。现在正式不支持 PHP 7.1 。这意味着如果现在发现漏洞,将永远无法修复,而被黑客入侵的可能性会增加。准备升级到新版本!
PSR-12
这项新的 PSR-12 标准取代了旧的 PSR-2 ,适应了过去几年中我们提供的所有新语言功能,并消除了一些不一致。感谢 PHP-FIG 这次的伟大更新!如果您一直在使用 PSR-2,请查看 PSR-12 中的更改。
PhpStorm 2019.3 提供了预定义的 PSR-12 代码样式,IDE 会建议您切换到此样式。您还可以通过 Preferences | Editor | Code Style | PHP 下的 Set from… 操作手动切换到此样式。

一些 PSR-12 规则被添加为检查,默认情况下处于关闭状态,但是 PhpStorm 建议您在选择 PSR-12 代码样式时打开检查。
您可以根据需要在 PHP | Code Style | PSR-12 中的 Preferences | Editor | Inspections 调整检查。

之后,您可以按 Cmd/Ctrl+Alt+L 在编辑器中重新格式化代码:

或者,您也可以让 PhpStorm 在提交之前的清理阶段自动运行它:

WSL
PhpStorm 现在支持在 WSL(适用于 Linux 的 Windows 子系统)环境中开发,适用于您在 Windows 计算机上启动 IDE 但开发目标环境是 WSL/Linux 的情况。您可以在 WSL 中指定远程 PHP 解释器,并将它用于运行脚本、测试、Composer 命令和调试。
首先,请确保已在 Windows 10 计算机上安装了 WSL ,并选择了 Linux 发行版。请参阅安装指南。
根据发行版的不同,您可能已经预装了 PHP。如果没有,则必须通过命令行手动安装。例如,在Ubuntu中可以运行以下命令:
当您在 WSL 环境中使用 PHP 时,就可以开始设置 PhpStorm 了。
在 File | Settings | Languages & Frameworks | PHP 下添加 CLI 解释器。

就是这么简单!您现在可以为运行测试、Composer 或您拥有的任何运行配置指定此解释器。
PHPDoc改进
通常在 PhpStorm 中,您已经可以在 PHPDoc 中解决 FQN 和链接,但是整个代码块以一种颜色显示并像一般注释样式设置。在 PhpStorm 2019.3 中,文档块将完全高亮显示所有类型、变量、参数、方法和属性。如果您的注释中有 HTML,它也会像这样高亮显示。

Markdown 和字符串中的 PHP 高亮显示
您偶尔可能需要在字符串文字中使用 PHP。希望不是在 中,但您应该明白我们的意思。或者,也许您想在 Markdown 文件的代码块中高亮显示 PHP 。由于特殊的 PHP 方言 InjectablePHP,在 PhpStorm 2019.3 中会获得所有这些功能。
该方言的工作方式类似于 PHP,但是可以省略开始标记。它将自动注入信息字符串等于 的 markdown 围栏中:

带有 标记的 Heredoc / Nowdoc 字符串:

在 调用中其实也是如此:

方便的小改进
条件的快速修复
条件 语句可能是该语言中最常用的结构。因此,在 PhpStorm 2019.3 中,我们添加了一些不错的快速操作来操纵条件。如果在 语句中有赋值,PhpStorm 建议使用

Alt + Enter 将其提取到变量中:

如果您有嵌套的 条件,现在可以输入

Alt + Enter 快速将它们合并为一个:

您可以将 后跟 合并为单个 :

或者,您可以执行相反的操作,将 分为 和 :

Inline 常量重构
这种重构与 Extract constant 相反,它导致用值替换常量匹配项。在常量上按 Cmd / Ctrl + Alt + N。

通过 Cmd/Ctrl+T 发现更多引用
解包函数参数(移除函数调用)
按 Shift + Cmd / Ctrl + Delete 移除冗余的函数调用:

输入 <? 时自动插入 <?php
短标记至少在接下来的几年内仍将是 PHP 的一部分,因为最后一次 RFC 投票仍未通过。但是 PhpStorm 可以通过在键入 时立即自动插入 来帮助您弃用短标记。

在数组键后自动完成 “=” 至 “=>”
我们在 2019.3 版本中加入了另一个节省时间的功能。 当您想到数组中添加一个项目并输入 以指定一个值时,只需按 ,PhpStorm 就会自动插入:

其他 PHP 相关更新
指定 PHP 测试运行配置的解释器
以前,如果要使用远程 PHP 解释器在 PhpStorm 中运行测试,则必须创建单独的运行配置。在 PhpStorm 2019.3 中,我们为所有 php 运行配置添加了解释器选项,因此您可以选择运行测试所必须使用的任何解释器。也可以随意使用 Docker、Vagrant 或任何其他远程解释器。

$this 变量的字体和颜色

HTTP客户端
编辑器工具栏
每次打开 或 文件时,您会看到一个让您能够快速访问所有常用操作的工具栏:

在文件中运行所有请求
使用 PhpStorm 中基于编辑器的 HTTP 客户端,可以用 分隔多个请求,将它们写在一个 文件中。如果您需要编写请求链(请求取决于之前请求的结果),这将非常方便。
之前,您必须逐个运行每个请求,现在在 PhpStorm 2019.3 中,您只需点击一下即可运行全部请求!

折叠请求
如果您要发送包含长主体的请求,例如,多部分表单数据或许多头文件,您可能希望将其折叠,以便在编辑器中减少噪音。
您可以折叠整个请求,保留第一行或仅保留正文部分:

主机补全
撰写新请求时,您不再需要输入之前使用的主机名。PhpStorm 将在建议列表中为您提供主机名列表:

动态变量
我们添加了 3 个动态变量,您可以在请求中使用它们:
– 生成一个新的 UUID-v4 (e9e87c05-82eb-4522-bc47-f0fcfdde4cab)
– 当前的 Unix 时间戳 ()
– 0 和 1000 之间的随机整数。
使用双大括号在需要的位置插入这些变量之一:

在以下的

PhpStorm 中的 HTTP 客户端概述视频中查看您需要了解的所有要点。
版本控制
为克隆项目重新设计了 UI
您现在可以从此对话框登录 GitHub,或者如果您已登录,IDE 会立即预览按帐户或组织分组的所有存储库的列表。

Checkout
我们已将 Checkout as 操作替换为两个单独的操作:New Branch from Selected 和Checkout 。新的 New Branch from Selected 操作会创建一个新分支,并且不会设置跟踪。Checkout 操作会静默创建一个新的本地分支,将其签出,并在没有同名本地分支的情况下对选定的远程分支设置跟踪。
推送任何分支
现在,您可以无需切换分支从任何分支推送变更。在 VCS | Branches 弹出窗口 – 选择一个分支,然后使用菜单中的 Push 操作。

数据格式自定义
您可以为 VCS Annotate 和 VCS Log 操作配置日期格式。例如,如果要使用美国格式,可以将其设置为 。

IDE
改进的插件管理
PhpStorm有很多不可思议的插件,您可以安装它们来扩展其功能并定制其外观。不过,管理插件有点麻烦,因为每次都需要重新启动 IDE。IntelliJ IDEA 2019.3 通过实现核心底层基础架构(支持动态插件安装)解决了这一问题。基本上,这意味着 IDE 现在可以任意加载和卸载插件而无需重新启动。当前已为主题和键盘映射插件启用了此功能。在未来的版本中,我们计划将此功能扩展到大多数插件。
对比度滚动条
现在,借助 Preferences/Settings | Appearance & Behavior | Appearance 中的 “Use contrast scrollbars” 复选框,可以让滚动条更明显。
平滑滚动
如果在 Preferences | Appearance & Behavior | Appearance下启用了 Smooth scrolling 选项,则使用鼠标滚轮/触摸板时,整个接口将平滑滚动,而不是逐行滚动。
仅在选定文本内搜索
只需在编辑器中选择您需要的代码段,然后按 Cmd/Ctrl+F 调用 Find 操作 – IDE 随后仅会在选定区域内执行搜索。要轻松地切换为在整个文件中搜索,请按 Cmd/Ctrl+F,或者在工具栏中切换 In Selection 选项。

新的编辑器命令可按字母顺序而排序内容
现在,通过在编辑器中选行并从主菜单中选择 Edit | Sort Lines,或者通过按 Cmd/Ctrl+Shift+A 从 Find Actions 运行此操作,可以轻松地按字母顺序进行排序。

Web 技术
在 WebStorm 2019.3 最新功能页面中,您可以看到 WebStorm 团队的同事们所做的所有更改。这里提到的所有变化也已整合到 PhpStorm 2019.3 中。
数据库工具
MongoDB 支持
我们终于开始支持 MongoDB 了。在此版本中实际支持的功能的是:
自省 (Introspection)
您可以在数据库资源管理器中查看集合与字段。我们从每个集合中抽取前 10 个文档,以获取有关字段的信息。此操作可以通过 JDBC 参数 fetch_documents_for_metainfo 自定义,可以在数据源属性对话框的 Advanced 选项卡中使用该操作。

数据查看器
打开任何集合或观察查询结果,即可选择按列排序或筛选值,分页也支持。
也可以以在树形视图中探索数据。要开启这一功能,请点击 Gear icon | View as… | Tree。

查询控制台
当前没有编码辅助,但不会影响您运行查询和获取结果。要运行语句,请将脱字符号放在它上面并按 Cmd/Ctrl+Enter 或使用工具栏上的 Play 按钮。
查询补全将稍后发布。

PhpStorm 开箱即包括 DataGrip 的所有功能,因此在数据库工具中有很多新功能有待探索。敬请关注 DataGrip 2019.3 版本的详细概览。
版本说明中提供了所有变更的完整列表,版本说明的篇幅的确很长!今天的文章就到这里了。
感谢您阅读到底!
将您的问题、建议、错误报告以及您的想法发送给我们或在下面留个言。
JetBrains PhpStorm 团队
The Drive to Develop
原文发表于2019年11月28日,作者 Roman Pronskiy
2019.3
MongoDB
php
phpstorm
PSR-12
WSL
Share
Prev post RubyMine 2019.3 现已发布: RuboCop 严重性映射,更好的运行一切(Run Anything)!ReSharper Ultimate 2019.3 现已发布! Next post
Subscribe to JetBrains Blog updates
Subscribe form
By submitting this form, I agree to the JetBrains Privacy Policy Notification icon
提交此表单,即表示我同意 JetBrains s.r.o. ("JetBrains") 使用我的姓名、电子邮件地址和位置数据向我发送简报和商业通讯,并为此目的而处理我的个人数据。我同意 JetBrains 根据 JetBrains 隐私政策为此目的使用第三方服务处理上述数据。我了解我可以在我的个人资料中随时撤回此同意。此外,每封电子邮件中也都包含退订链接。
谢谢!