开发工具

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

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-enterAlt + Enter,然后选择 Add declared type for the field,这样就完成了。

箭头函数

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

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

在匿名函数上按 alt-enterAlt + Enter<1>,然后选择 Convert closure to arrow function

数值文字分隔符

您现在可以在数字中的任何位置添加下划线符号,以格式化它们。在任何数字上按 alt-enter Alt + Enter 并应用 Add number separators。 对于十进制数字,每 3 位数字添加一个下划线 ‘_‘ ;对于十六进制、二进制和八进制,每 4 位数字添加一个下划线。

嵌套三元运算符

几乎所有的编程语言都从右到左计算三元运算符。PHP 的做法有所不同,这违反直觉,并可能导致错误。PHP 7.4 弃用了嵌套.这意味着您应完全不使用嵌套三元运算符,或者如果您必须使用,则应使用括号来明确地声明计算的顺序。

PhpStorm 2019.3 高亮显示弃用的表达式并为您提供快速修复 (Alt+Enter)以阐明行为。

新的序列化机制

由于现有序列化的问题无法解决,PHP 核心团队决定引入两个新的魔术方法 __serialize() 和 __unserialize()。 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中可以运行以下命令:
    sudo apt update
    sudo apt install php php-mbstring php-dom php-xml php-zip php-curl php-xdebug

  • 当您在 WSL 环境中使用 PHP 时,就可以开始设置 PhpStorm 了。

  • 在 File | Settings | Languages & Frameworks | PHP 下添加 CLI 解释器。

就是这么简单!您现在可以为运行测试、Composer 或您拥有的任何运行配置指定此解释器。

PHPDoc改进

通常在 PhpStorm 中,您已经可以在 PHPDoc 中解决 FQN 和链接,但是整个代码块以一种颜色显示并像一般注释样式设置。在 PhpStorm 2019.3 中,文档块将完全高亮显示所有类型、变量、参数、方法和属性。如果您的注释中有 HTML,它也会像这样高亮显示。

Markdown 和字符串中的 PHP 高亮显示

您偶尔可能需要在字符串文字中使用 PHP。希望不是在 eval() 中,但您应该明白我们的意思。或者,也许您想在 Markdown 文件的代码块中高亮显示 PHP 。由于特殊的 PHP 方言 InjectablePHP,在 PhpStorm 2019.3 中会获得所有这些功能。

该方言的工作方式类似于 PHP,但是可以省略开始标记。它将自动注入信息字符串等于 php 的 markdown 围栏中:

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

在 eval() 调用中其实也是如此:

方便的小改进

条件的快速修复

条件 if-else 语句可能是该语言中最常用的结构。因此,在 PhpStorm 2019.3 中,我们添加了一些不错的快速操作来操纵条件。如果在 if 语句中有赋值,PhpStorm 建议使用 alt-enterAlt + Enter 将其提取到变量中:

如果您有嵌套的 if 条件,现在可以输入alt-enterAlt + Enter 快速将它们合并为一个:

您可以将 else 后跟 if 合并为单个 elseif

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

Inline 常量重构

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

通过  Cmd/Ctrl+T 发现更多引用

解包函数参数(移除函数调用)

按 Shift + Cmd / Ctrl + Delete 移除冗余的函数调用:

输入 <? 时自动插入 <?php

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

在数组键后自动完成 “=” 至 “=>”

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

其他 PHP 相关更新

指定 PHP 测试运行配置的解释器

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

$this 变量的字体和颜色

HTTP客户端

编辑器工具栏

每次打开 .http 或 .rest 文件时,您会看到一个让您能够快速访问所有常用操作的工具栏:

在文件中运行所有请求

使用 PhpStorm 中基于编辑器的 HTTP 客户端,可以用 ### 分隔多个请求,将它们写在一个 .http 文件中。如果您需要编写请求链(请求取决于之前请求的结果),这将非常方便。

之前,您必须逐个运行每个请求,现在在 PhpStorm 2019.3 中,您只需点击一下即可运行全部请求!

折叠请求

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

主机补全

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

动态变量

我们添加了 3 个动态变量,您可以在请求中使用它们:

  • $uuid – 生成一个新的 UUID-v4 (e9e87c05-82eb-4522-bc47-f0fcfdde4cab)

  • $timestamp – 当前的 Unix 时间戳 (1563362218)

  • $randomInt – 0 和 1000 之间的随机整数。

使用双大括号在需要的位置插入这些变量之一:
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}

 

 

在以下的
video 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 操作配置日期格式。例如,如果要使用美国格式,可以将其设置为 mm/dd/yyyy 

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

以下评论无法再编辑。

4 回复: PhpStorm 2019.3 已发布:全面的 PHP 7.4 支持,PSR-12,WSL,MongoDB 等等!

  1. Avatar

    flint 说:

    December 27, 2019

    phpstorm 啥时候出中文版啊,我看到youtrace都出中文了

    • Avatar

      Shengyou Fan 说:

      February 11, 2020

      您好:团队已经启动一个本地化项目在实现多语系,预计今年会有一波重大更新,再请您稍待。有进一步消息会公布在博客、微信公众号、微博等官方渠道,请定期关注我们的最新信息,谢谢。

  2. Avatar

    fy 说:

    May 5, 2020

    最新版本toolbox check for updates一直报错!非常翻!请核实!

    • Avatar

      范圣佑 说:

      May 6, 2020

      感谢您的留言,您可以将您遇到的问题通过表单 https://toolbox-support.jetbrains.com/ 提交(可用中文)给团队。或是将您遇到的问题通过微信公众号发给我们,技术支持团队会协助您解决,谢谢。

Discover more