PhpStorm 2021.3 Help

PHP 8.0

PHP 8.0 带来了新特性、语法添加和错误修正。有关此版本的新功能的详细信息,请参阅发布公告。有关迁移代码的详细信息,请参阅从 PHP 7.4.x 迁移到 PHP 8.0.x指南。

命名参数

命名参数允许根据参数名称而不是位置将参数传递给函数。这样,函数调用变得自记录,参数顺序变得任意。

在函数调用中,您可以使用提供的快速修复Alt+Enter将参数名称一一添加或一次添加到所有参数。如果列表中有参数的传递值与默认值匹配,PhpStorm 会将它们突出显示为未使用并提供快速修复以删除它们。

添加命名参数

属性

使用attributes,您可以为类、属性、函数等的声明提供结构化的语法元数据。与PHPDoc 注释不同,属性在语言级别得到支持和验证。

要创建属性,请#[Attribute]在类声明的顶部添加标记。在属性内部,可选择提供目标可重复性标志。要使用代码完成,请按Ctrl+Space

创建 PHP 属性

一些代码检查有助于确保正确使用属性:

联合类型

联合类型接受多种不同类型的值,而不是单一类型。联合类型被指定为Type1|Type2|...并且可以在所有接受常规类型的地方使用。所有现有的 PhpStorm编码辅助功能都完全支持联合类型。

如果联合类型是通过 PHPDoc 提供的,PhpStorm 提供了一个快速修复Alt+Enter来将其转换为本机联合类型。

将 PHPDoc 联合类型转换为本机声明

使用本机声明的联合类型,PhpStorm 可以分析调用并检测问题区域。检查适用于所有级别:属性、参数和返回值。

联合类型声明中的类型检查

建设者物业推广

使用构造函数属性提升,您可以直接在构造函数中声明和初始化类属性。如果您为构造函数参数提供可见性修饰符(例如publicprotectedprivate),则该参数将被解释为对象属性,并且其值将分配给该属性。这使对象更小、更易读,并有助于减少通过构造函数初始化变量的样板代码量。

您可以使用 quick-fix 将构造函数参数转换为提升的属性Alt+Enter

将构造函数参数转换为提升的属性

PhpStorm 验证提升的属性是否按照PHP 8 约束使用。例如,不能在构造函数外部或抽象构造函数内部声明提升的属性,也不能提升可变参数。

提升属性检查

匹配表达式

匹配表达式类似于但提供switch更安全的语义并且可以返回一个值。PhpStorm 检测switch可以转换为match表达式的语句并提供专用的快速修复Alt+Enter来执行此操作。

将 switch 语句转换为匹配表达式

一些代码检查有助于确保match正确使用表达式:

  • 如果表达式参数的类型不匹配任何指定条件,则表达式将导致Fatal Error. 在这种情况下,您可以default使用提供的快速修复来添加手臂。

    添加默认匹配臂
  • 使用的“匹配”条件检查突出显示从未匹配的条件并建议将其删除。

    删除不匹配的条件
  • 未使用条件检查检测永远不会运行的重复条件。您可以在它们之间导航并从值列表中删除整个臂或仅删除重复值。

    添加默认匹配
  • 'match' 表达式检查中的Duplicate arm检测不同 arm 中的相同主体,可以将其合并为一个以减小块的大小。

    合并重复的匹配武器
  • ' match' 表达式可以替换为三元表达式检查将检测具有单臂和default臂的表达式,并让您将它们替换为三元表达式。

    将匹配表达式转换为三元表达式
  • 如果匹配表达式只有一个默认分支,那么它可能是多余的。冗余“匹配”表达式检查将突出显示此类表达式并让您删除它们。

    简化匹配表达式

Nullsafe 运算符

使用nullsafe 运算符 ?->,您可以将嵌套的空检查条件替换为链式调用。

使用 nullsafe 运算符

PhpStorm 验证 nullsafe 运算符没有错误地用于写入上下文或作为参考。

Nullsafe 操作员检查检查

非捕获渔获物

从 PHP 8 开始,您可以捕获异常而不将它们捕获到变量中。未使用的局部变量检查检测catch语句中未使用的变量并提供快速修复Alt+Enter以删除它们:

Nullsafe 操作员检查检查

抛出表达式

在 PHP 8 中,在所有接受表达式的地方都允许抛出异常,例如在箭头函数、合并运算符??和三元运算符?:中。PhpStorm 提供了一个实时模板,可让您快速添加throw表达式。要应用它,请键入thr并按Tab

在表达式中抛出异常

在对象上使用 ::class

在以前的 PHP 版本中,要获得类 FQN,您可以使用ClassName::class. 但是,在对象上,您必须调用get_class(). 在 PHP 8 中,get_class()调用可以安全地替换为$object::class. PhpStorm 对此提供了快速修复,如果使用不当Alt+Enter也会发出警告。::class

在对象上使用 ::class

字符串的新函数

PHP 8 引入了几个处理字符串的新函数。str_contains函数检查一个字符串是否包含在另一个字符串中。str_starts_with 和 str_ends_with函数用于确定字符串是否以特定子字符串开头或结尾。' str*' 调用可以替换为 PHP 8 'str_*' 调用检查突出显示strpossubstr调用可以替换为现代和更不言自明的替代方案,并提供相应的快速修复Alt+Enter

处理字符串的函数
最后修改时间:2021 年 8 月 26 日