PhpStorm 2020.1:支持composer.json,PHPUnit工具,PCOV和PHPDBG的代码覆盖率,Grazie等



哈Ha!我们很高兴介绍今年PhpStorm的第一个主要版本!

在裁减下,将对所有明显的变化和新功能进行详细分析。小心-很多图片。

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


现在,可直接在文件中直接使用所有用于处理依赖项的操作,也可以composer.json在编辑器中直接进行操作。

可以从上下文菜单或使用热键创建一个新的composer.json文件Ctrl(⌘)+N。此文件的模板位于“ 首选项/设置” |“设置”中。编辑器文件和代码模板



管理依赖项

要添加依赖项,只需开始输入供应商和程序包的名称,然后会出现带有相应选项的自动完成列表。该软件包的可用版本将



版本字段中提供。目前,必须手动添加表示一系列版本的回车符(^)或其他符号,但是在将来的版本中,我们将修复此问题。
对于PHP版本或扩展名的要求,自动完成也将起作用。

更新和安装软件包

如果composer.lock没有文件,也没有安装软件包,则PhpStorm将突出显示部分名称requirerequire-dev。要安装它们,可以单击编辑器上方工具栏中的“ 安装”按钮。或使用快速单击操作Alt(⌥)+Enter并选择“ 安装软件包”,.



但如果未安装所有软件包,则PhpStorm将突出显示缺少的软件包。然后,Alt(⌥)+Enter您可以调用其中任何一个,然后选择“ 更新软件包”或“ 更新所有软件包”

在指定的版本要求旁边,灰色版本将是实际安装的软件包的版本。在软件包的弹出对话框中,将从packagist.org获得有关下载次数和星级的信息。



PhpStorm从packagist.org中获取有关软件包及其版本的所有信息,并将其缓存。

导航到文件和文件夹

当然,您知道通过单击Ctrl(⌘)+Click并且Ctrl(⌘)+B可以转到实体的定义或搜索其用途。

composer.json此也将起作用。如果单击Ctrl(⌘)+Click一个包,则相应的目录将在“项目树”中突出显示。如果在文件上,那么它将在编辑器中打开。



单击Ctrl(⌘)+ClickCtrl(⌘)+B在其中的任何链接上composer.json预期会在浏览器中将其打开。

自动完成在自动加载节(-dev)中,
基于类信息的自动完成和项目的目录结构适用于名称空间和路径。



Ctrl(⌘)+ClickCtrl(⌘)+B转到文件和文件夹在这里也适用。

脚本的改进

首先,过渡到文件/文件夹/方法的工作方式相同。其次,支持团队别名。第三,可以通过在脚本名称旁边按[播放]按钮从编辑器中启动脚本。

这将自动创建运行配置。这意味着您可以使用hotkey重新运行脚本Ctrl(⌃)+R,这在调试时非常方便:



安装代码质量工具
如果存在dev依赖项FriendsOfPHP/PHP-CS-Fixer,然后PhpStorm将检查是否启用了适当的检查以及是否安装了规则集。如果没有,您可以致电Alt(⌥)+Enter进行修复:



PHP类型推断改进


类型推断引擎是PhpStorm的基础,并且在此版本中进行了一些显着更改。

额外的标签突出显示变种
添加标签@var是告诉PhpStorm变量类型的好方法。但是我们正在不断改进类型推断,并且其中一些声明可能很多余,因为PhpStorm已经知道变量的类型。

此类案例将突出显示,可以使用快速修复Alt(⌥)+Enter-> “删除”变种



跟踪空类型是一项艰巨的任务,在某些地方PhpStorm无法处理它。现在在2020.1中,PhpStorm知道何时变量可以为null,什么时候不能为null。

下面是一些示例:



初始化数组的自动完成

假设您有一个包含已知元素的数组,然后尝试对其进行迭代。以前,自动补全在这里不起作用,因为类型信息丢失了。在2020.1中,一切正常:



array_map / array_filter中的自动补全

在闭包主体中,传递给array_map()和array_filter()函数,参数的补码现在起作用。



使用PCOV和PHPDBG的代码覆盖率


您可以使用Xdebug构建代码覆盖率但是由于这主要是调试器,因此开销很大。为了加快获取覆盖率报告的速度,可以使用更轻巧的工具:krakjoe / pcov扩展或PHP 5.6+中内置的PHPDBG。

现在,PhpStorm都支持两者。您需要为测试创建“运行”配置,然后在设置中选择所需的Coverage驱动程序。然后通过单击按钮运行带有覆盖率计算的测试



在README中阅读有关Xdebug,PCOV和phpdbg之间覆盖率计算差异的更多信息

PHPUnit工具包


在最近发布的PHPUnit 9(并且已经是9.1)中,许多功能已被删除或弃用。为了加快迁移速度并防止错误,我们添加了许多检查和快速修复。



为该类创建一个新测试

通过调用Alt(⌥)+Enter类声明并选择Create New PHP Test,您可以快速获得测试的框架。



元数据


该文件中的元数据.phpstorm.meta.php允许PhpStorm提供有关您的项目的其他信息,从而改善代码完成率。例如,此功能在Symfony插件Laravel IDE Helper中使用

您可以从PHP报告中了解有关元数据功能的更多信息,该报告 PHP Russia 2019上PhpStorm的开发工具

PhpStorm 2020.1对元数据进行了许多改进。

参数指标指示覆盖,地图和类型

使用前override()map()并且type()你可以改变的第一个参数功能的行为。在PhpStorm 2020.1中,您可以指定一个任意参数索引:



通过__get访问属性

如果通过magic接收到属性值__get(),则有关类型的信息将丢失。可以使用其他标签@var@property,但这并不总是可以保存。现在,您可以通过元数据指定所有内容。



实现ArrayAccess

元数据的对象中的键的自动完成功能支持ArrayAccess对象,但仅建议值的类型。现在,可能的密钥也将自动完成。



自定义退出点

PhpStorm考虑类型函数die()和/ exit()或引发异常以完成执行。但是应用程序可能具有更复杂的退出点。例如,简单的dd()带有参数E_USER_ERROR的trigger_error函数 在PhpStorm 2020.1中,您可以将功能标记为出口点,这将相应地调整流量分析。对功能的图标通过元数据重新定义 对面的,其行为已经改变与函数的声明或者,将显示一个图标。单击该图标将打开一个更改行为的文件,因为可能有多个文件。







override()exitPoint()expectArguments().phpstorm.meta.php



可以在“首选项/设置” |“设置”中隐藏图标编辑器 一般| 天沟图标

机器学习对加载项列表进行排序


添加了基于机器学习的自动完成选项的排名。

如何查看ML的作用?

ML的自动完成功能默认情况下处于禁用状态。我们不希望机器人抢走我们的工作!要启用它,请转到“首选项/设置” |“设置”。编辑器 一般| 完成代码并启用选项基于机器学习PHP的等级完成建议

如果还启用了“在完成弹出窗口中显示位置更改 ”选项,则自动完成列表将显示元素顺序的更改方式。



我们计划防止汽车起义在以后的版本中继续朝这个方向努力。

新检查


私有属性可以是局部变量,

如果仅在一种方法中使用并且立即被覆盖,则属性定义将突出显示。要修复,您可以调用快速修复Alt(⌥)+Enter “用局部变量替换属性”



额外的属性初始化

假设私有属性在类中具有默认值,但是在构造函数中,它将立即被另一个值覆盖。在这种情况下,默认值是冗余的,并且仅添加噪声。

未使用的初始值设定项将突出显示,可以使用快速修复Alt(⌥)+Enter “删除冗余初始值设定项”将其删除



将PHP 7.4中的属性类型更改为默认值



冗余三元运算符

PhpStorm将突出显示琐碎的三元表达式,并可以通过快速修复Alt(⌥)+Enter将其替换为更简单的三元表达式



通过引用进行冗余传输

使用通过引用进行传输会导致意外的后果,这就是Nikita Popov建议在调用时允许通过引用进行显式传输的原因之一PHP中的函数

同时,PhpStorm 2020.1将突出显示声明为通过引用传递但未按原样使用的参数。可以通过快速修复将其安全移除Alt(⌥)+Enter



对于在foreach循环中具有链接的数组,这同样适用:



删除多余的PHPDoc,由于相应的快速修复,现在其中的类型声明也非常简单。



是的,默认情况下,检查处于“ 信息”级别,即不会突出显示。如果要突出显示多余的PHPDoc块,请“首选项” |“检查”中查看“ 冗余PHPDoc”注释编辑器 检查时,弱警告级别设置为更高或更高。

更新了重构“移动方法”


有时可能需要将方法转移到另一个类。如果在项目代码中多次使用此方法,那么PhpStorm可以为您提供帮助。

以前,您必须先使该方法静态化,然后调用另一个操作以将其转移。在PhpStorm 2020.1中,“移动方法”重构已重新设计为单个原子动作。删除了多余的步骤和弹出窗口,一切都一口气完成。

将鼠标悬停在方法上,然后按F6(或Ctrl+T3)。然后选择目标类,您就完成了。



要查看所有可用的重构,可以单击Ctrl+T代码中的任意位置。

HTTP客户端中的PHP调试


现在,要有选择地启用调试,您无需理会请求参数或在浏览器中安装扩展。只需在文件中创建HTTP请求.http并使用PHP Debug命令发送即可,该命令可在菜单中Alt(⌥)+Enter或通过单击图标获得。结果,cookie将被自动添加到request中XDEBUG_SESSION



还有一些PHP的小东西


@不赞成使用的元素在“结构树”视图中划线显示。突出显示匹配的标签<?php /?> 跳转至开始/结束括号。Twig的Lexer自定义 有时您可能需要更改Twig模板的标签字符,例如,如果您还使用了Angular,相同的语法。 您可以在“ 首选项/设置” |“设置”中执行此操作。语言和框架| PHP | 树枝
Ctrl(⌘)+F12









Shift+Ctrl+M (⌃+M)








集成开发环境


Grazie高级拼写和语法


PhpStorm中包括Grazie插件,该插件开箱即用,它不仅检查文本的拼写错误,而且检查语法和样式。此外,支持16种语言,所有检查均在本地执行,而无需将数据发送到任何地方。



默认情况下,对Markdown文件启用检查。
您还可以为所有字符串文字,注释,PHPDoc块和提交消息包括它们。

对于PHP,可以在“设置” /“首选项” | 启用”中启用。编辑器 校对| 语法

LightEdit模式


有时您需要快速查找/修复文件并为此打开一个完整的IDE,这似乎太多了,但是您想要具有通常的背光和功能。在这种情况下,我们正在使用轻量级的LightEdit模式。

它的工作原理是这样的:如果在PhpStorm未运行的情况下从命令行或操作系统的上下文菜单打开文件,则该文件将在LightEdit中打开。好吧,如果成熟的PhpStorm已经在工作,那么该文件将仅在其中打开。



JetBrains Mono-默认字体




禅宗模式


新模式结合了Distraction Free和Fullscreen的功能,可将代码深深地浸入代码中。
查看| 外观| 进入禅宗模式



接口


终端窗口拆分


现在,您可以打开屏幕并在一个选项卡中打开多个会话,而不必打开新的选项卡并在它们之间进行切换。为此,请从终端上下文菜单中选择“ 水平/垂直拆分”



IntelliJ Light

主题light主题已经过稍微更新和统一,以在所有操作系统上看起来都一样,并且其名称已更改为IntelliJ Light

自定义状态栏

从上下文菜单中,您可以选择将在其上显示哪些信息。



组态


统一SSH配置


以前,如果在部署,远程解释器或SSH终端中重用了SSH连接,则每次都必须重新配置它。

现在,可以在“ 首选项/设置” |“设置”中添加/编辑所有SSH连接工具| SSH配置,然后在需要它们的地方重复使用它们。



IDE配置的路径已更改


例如,在macOS上:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


更多的帮助

自定义路径以保存运行配置


以前,运行配置存储在.idea许多完全添加到.gitignore 中的文件夹中(最好这样)。现在,您可以选择任何路径,并通过版本控制系统与同事共享运行配置。

在招募新员工时特别方便:撤消在PhpStorm中打开并通过一个按钮启动的项目。

为此,在“运行/调试”配置对话框中,需要选择“ 另存为项目文件”选项,然后单击齿轮,可以在项目中选择所需的路径。



版本控制


新提交


“提交”窗口在非模式模式下可用,并显示在左侧。因此,它不会在提交准备期间阻止其他文件的工作,并且有关更改的更多信息将显示在屏幕上。

默认情况下,新用户将为新用户打开新的提交,而已安装PhpStorm的用户将关闭新的提交。

由“ 首选项/设置” |“设置”中的使用非模式提交界面”选项启用 版本控制| 提交



Git分支增强功能


在IDE窗口的右下角,指示当前的Git分支。如果单击它,则VCS | Git | 树枝
在这里,我们添加了一个搜索字段。刷新按钮更新远程分支的列表。对于每次提交,都会添加一个指示器:传入(蓝色)或传出(绿色)。



重新设计了交互式基础


Git Rebase允许您重写提交的历史记录。现在,您可以快速摆脱“临时”提交,更正消息或提交顺序。当然,所有这些操作都可以从控制台手动完成,但是PhpStorm允许您立即查看在特定提交中所做的更改。

首先,在提交历史记录中,您需要选择所需的基本提交,然后从上下文菜单中从此处选择Interactively rebase



数据库工具


PhpStorm 开箱即用地包含了DataGrip的几乎所有功能,因此您可以查看我们的同事对DataGrip 2020.1版本评论

网页


而且,一如既往,来自WebStorm 2020.1的所有更新也都包含在PhpStorm中。

更改的完整列表可以在非常大的发行说明中找到

您还可以在“ 新增功能页面上观看发行概述,如果只有几分钟的时间,那么以下是一个简短的视频(英语),其中包含发行的主要功能的演示:



这就是所有的时间。感谢您阅读到底!我们将很高兴在评论中提出问题,希望,错误报告和只是想法。

好好照顾自己!
您的JetBrains PhpStorm团队

All Articles