哈Ha!我们很高兴介绍今年PhpStorm的第二个主要版本!
切口下方是所有显着变化和新功能的详细分析。小心-很多图片。
PHP 8中的联合类型
PHP 8将具有许多新功能,在某种程度上甚至是一种新语言。我们开始为八种早期版本提供支持,第一个主要功能是合并类型。可以在现在可以指定类型的任何地方使用
串联类型
T1|T2|...:在参数,属性和返回值中。在这种情况下,变量可以采用列出的类型之一。
实际上,连接类型已经在PHPDoc中使用了很长时间,但是现在解释器实际上将在运行时检查它们。
切换语言版本
要查看所有可能性,您可以在Languages&Frameworks |中将语言版本手动切换到PHP 8。PHP | PHP语言级别。
或者,如果代码已经使用了新功能,则可以使用快速修复(Alt + Enter)进行切换。
如果在composer.json中指定了PHP版本,则PhpStorm将自动将其拉起。
将PHPDoc转换为本机组合类型
您可以对具有组合类型的PHPDoc标记调用快速修复(Alt + Enter)。
删除不必要的PHPDoc
如果PHPDoc仅包含类型声明,则可以将其作为多余的快速修复(Alt + Enter)删除。
这样的删除能否始终被认为是安全的,并在提交之前自动完成?我们正在考虑添加这样的功能。
类型验证
PhpStorm过去能够解析类型并通过PHPDoc标记中的信息查找违规。使用本地声明,这些可能性得到了扩展。
检查所有内容:属性,参数,返回值。
这在不立即发现违规的复杂代码中特别有用。
伪类型为false
一些
false在错误时返回。例如,这是他们的言行举止strpos(),array_search()和310种标准功能。
在这种情况下,可以将返回类型指定为连接的,例如
int|bool,但是实际上true它永远不会存在。
对于这种情况,引入了伪类型
false。它只能在联接中使用。否则,PhpStorm将突出显示无效代码。
重复和冗余类型
类型联合中的许多组合都是被禁止或根本不必要的。例如:
bool|false-因为包含假bool;Foo|Foo或int|string|INT-重复;object|User-object故意包含其他所有内容;iterable|array或iterable|Traversable-iterable包括数组和Traversable;void-只能在返回值中使用,并且只能单独使用;false或null-仅作为协会的一部分。
PhpStorm将突出显示所有此类违规行为。
可空类型
旧语法
?Type现在被视为的简写Type|null。
但是速记c
?不能用于联接中,因为存在无法解决的歧义。
对于此类情况,PhpStorm具有快速修复(Alt + Enter)。
通过继承更改类型
方法有两个规则:
参数类型是convariant,即可以扩展。
返回类型是covariant,即只能缩小。
在这种情况下,类型的顺序无关紧要,并且
Type1|Type2等效Type2|Type1。
不能更改属性的
类型必须将继承的属性的类型减小为父级,例如:
新的控制流引擎
对控制流引擎的更新使我们能够添加新的检查并修复许多旧的错误。因此,PhpStorm可以更好地理解代码。
在某些地方,有可能会注意到新检查中的突出显示和警告。其中一些可能会引起您的注意,因为它们可能是潜在的错误来源。修复其他问题只会使代码更干净。
以下是一些检查示例。
变量始终为true或false来自doctrine / orm的Parser.php
文件中的示例。条件始终 为true。symfony / form中的FormValidator.php文件中的示例。Instanceof结果始终 为true。symfony / monolog-bridge中Logger.php文件中的示例。将永远是类型
$thisResetInterface因为那个在层次结构中更高。
表达式始终
为null。symfony / process中的ProcessUtils.php文件中的示例。
新操作:键入信息(⌃⇧P / Ctrl + Shift + P)
您可以将插入符号悬停在任何表达式上,然后调用此操作以查看PhpStorm为该表达式推断的类型。可从“查看”菜单| 键入信息或通过热键⌃⇧P / Ctrl + Shift +P。
作曲家改进
从2020.1版开始,所有具有Composer依赖项的操作都可以直接在PhpStorm中的composer.json文件中执行。此版本中有几处改进。
支持自定义存储库Satis / Packagist
如果在“存储库”部分中指定自定义源,则代码完成将可用于其中的所有软件包。软件包和版本信息将缓存在PhpStorm中。
另外,如果指定了多个版本,
如果列出的版本之间用逗号或竖线(
||)分隔,则PhpStorm现在将正常工作并显示可用选项。
链接到代码和站点
带有信息的弹出窗口中的每个软件包都有指向站点的链接。
代码质量工具设置
如果依赖项列表包含PhpStorm支持的代码质量工具,则在它们对面将有一个扳手图标可转到设置。
改进代码质量工具
顺便说一下,关于优质工具。PhpStorm 2020.2有一些有用的补充。
Docker Compose
支持PHP_CodeSniffer,PHP CS Fixer和PHP Mess Detector可以通过docker compose运行。
PHP_CodeSniffer的例外列表
如果custom中
ruleset.xml有一个部分"exclude-pattern",则现在将其考虑在内,并且不会在IDE中分析指定路径上的文件。
通过远程解释器进行格式化
PHP CS Fixer和PHPCBF可以通过SSH,Docker,Docker Compose,Vagrant等与解释器一起运行。
命令行工具
所有Symfony,Laravel Artisan,Drupal Drush,WP-CLI和Composer脚本都可以在PhpStorm中快速运行,而无需打开终端。
为此,请在“工具” |“工具”中添加适当的工具。命令行工具支持。
然后,通过单击,
Ctrl-Ctrl出现运行任何行行,其中所有具有自动完成功能的命令均可用。
从此版本开始,您甚至不需要为Symfony,Laravel和Drush进行任何配置。打开项目,单击
Ctrl-Ctrl并开始输入命令就足够了。
️对于macOS上的Laravel,文件
artisan必须是可执行文件(chmod +x artisan)。
此外,现在可以通过任何远程解释器(SSH,Docker,Docker Compose,Vagrant)运行工具。例如,您可以通过从image添加Docker解释器来快速测试PHP 8应用程序
php:rc-cli。
新的重构:类提取
一开始,类看起来整洁干净。然后,越来越多的新方法和属性被添加到它们中,该类迟早已经“肿胀”,并且在各个方面都承担着过多的责任。
将一堆相关的方法和属性分配到一个新类中可以在这里有所帮助。这正是新的Extract Class重构所提供的。
要尝试它,您需要在类内部单击
Ctrl+T并选择Extract Class。PhpStorm将提示您输入新类的名称,您可以立即选择更多方法和类进行检索。
此重构也适用于常规功能。
PHP的更多内容
新检查:键入的属性可能未分配
如果已声明但未初始化类型化的属性,则尝试读取它会导致错误
TypeError(除非定义了magic属性__get())。PhpStorm将突出显示来自未初始化属性的读数。
新检查:阵列仅用于写访问
来自doctrine / orm的 文件SchemaTool.php中的示例。方法中
的数组
$pkColumns已gatherColumns()更新,但从未读取。
自定义生成的getter和setter
现在,您可以通过在
camelCase()和之间进行选择来自定义方法命名snake_case()。
并自定义将它们添加到类的顺序。
这两个选项在“编辑器” | “编辑器”中均可用。代码样式| “代码生成”选项卡中的“ PHP ”。
在一个窗口中为许多项目提供正确的分辨率
如果在一个窗口中打开多个项目,则经常会看到该类已定义多次的错误。而当尝试定义一个类时,您仍然必须选择哪个类。
PhpStorm 2020.2没有这些错误,并且过渡按预期进行。
供应商课程的优先级较低
在自动完成列表中,将直接为项目中的类赋予优先级,并且文件夹
vendor和PHAR文件中的实体将带有较低的类。
将光标添加到所有选中的行
新操作“每条选定行插入插入符号”将光标添加到每条选定行的末尾,并取消选择它。可以使用⌥⇧G/ Alt + Shift + G键来调用。
全面支持GitHub拉取请求
PhpStorm 2018.3中提供了基本的请求请求支持。此后进行了更新,但是仍然需要切换到浏览器进行许多操作。
在PhpStorm 2020.2中,所有拉取请求工作都可以在IDE中完成!
您可以从VCS访问拉请求。 Git |从工具栏或通过单击查看拉取请求
Alt+7。第一个是带有搜索和过滤选项的可用请求列表。
单击请求请求将打开有关请求的详细信息:审阅者,标签,更改的文件,时间轴。
整个审核流程可以在此处完成。开始并请求审阅,在行或提交级别对更改进行评论,提交审阅,合并。
检查结果(包括来自CI的检查结果)将显示在时间轴下。
以前,要合并拉取请求,您必须创建一个本地分支。现在,它不是必需的,您可以通过按一个按钮进行合并。
OpenAPI支持
OpenAPI规范 插件可用于所有JetBrains IDE,并且从版本2020.2开始工作。在Open API规范文件(
openapi.yaml/openapi.json和swagger.yaml/ swagger.json)中,它提供了突出显示,增强,验证和导航的功能。
此外,还提供以下选项:
- 与Swagger UI集成-直接在IDE窗口中呈现。
- 代码生成。
- OpenAPI规格的结构差异-允许您快速检测到重大变化。
- Gatter图标,用于在HTTP客户端中快速创建请求。
- 在HTTP客户端中完成端点。
- 重命名重构-如果您在规范中重命名端点,则它将在HTTP客户端的请求中自动重命名。
新的检查小部件
现在,编辑器的右上角显示一个小部件,其中包含当前文件中的问题数量。
使用箭头,您可以快速跳至下一个/上一个问题(之前可以使用
F2/键完成Shift+F2)。
在窗口小部件中,您可以选择显示什么级别的问题,例如,仅显示语法错误或所有问题。
通过单击小部件,将打开一个新的“问题”窗口,其中列出了文件中所有检测到的问题。
版本控制
来自WSL 2的Git
PhpStorm现在可以使用WSL Git二进制文件。而且,IDE本身会确定是否安装了WSL,以及其中是否提供了Git。
这些设置可在“首选项” |“选项” 版本控制| Git的。
️Git仅适用于WSL2,因为来自WSL1的Git不稳定,并且可能导致Git命令产生错误的结果。
改进的用于比较分支的UI
PhpStorm允许您比较任何分支,并查看哪个提交进入了另一个提交。为此,请从“ VCS”弹出窗口|“可用”中选择任何分支。分支并从上下文菜单中选择“与当前比较”。
在PhpStorm 2020.2中,日志和提交差异将直接在编辑器中显示。这样可以在屏幕上显示更多信息。
更新的命令对话框
重新设计和统一了Git Merge,Pull和Rebase命令的对话。添加了缺少的选项,现在您可以看到将执行的完整Git命令。
所有命令在VCS | Git的。
新动作:删除提交
现在可以直接从PhpStorm中的日志中删除额外的或临时的本地提交。为此,请从commit的上下文菜单中选择Drop Commit。
新动作:将提交合并为一个(压缩)
您也可以将多个提交合并为一个。例如,在创建拉取请求之前或在推送更改之前清除历史记录会很方便。
在日志中选择多个提交,然后从上下文菜单中选择Squash Commits...。
对于这两种动作,都在幕后完成
git rebase。
数据库工具
PhpStorm开箱即用,几乎包含我们同事在DataGrip 2020.2版本概述中涵盖的几乎所有DataGrip功能。
网页
而且,一如既往,PhpStorm也包含来自WebStorm 2020.2的所有更新。例如,使用插件,Prettier也可以用作PHP文件的默认格式化程序。
您可以在“新增功能”页面上下载PhpStorm 2020.2。
以下是一个视频(英文),显示了该版本的主要功能:
这就是所有时间。感谢您阅读到底!我们将很高兴在评论中提出问题,希望,错误报告和只是想法。
您的JetBrains PhpStorm团队