jetbrains/phpstorm-attributes

PhpStorm 特定属性

1.1 2023-09-01 08:50 UTC

This package is auto-updated.

Last update: 2024-08-29 11:05:52 UTC


README

official JetBrains project

PhpStorm 属性

使用这些 PHP 8 属性在 PhpStorm 中以获得更高级的代码补全和分析。

博客文章中了解更多信息。

安装

这些属性在 PhpStorm 2020.3 及更高版本中可用。它们已包含在 PhpStorm 中,因此您无需单独安装。

如果您使用其他静态分析工具并且不想遇到类未找到的问题,那么您可能希望将属性包添加到 composer.json 中作为开发依赖项

composer require --dev jetbrains/phpstorm-attributes

#[已弃用]

当您想通知用户实体将在未来被删除时,使用此属性。

reason 中提供解释提示,在 replacement 中提供更新建议。

#[Deprecated(
    reason: 'since Symfony 5.2, use setPublic() instead',
    replacement: '%class%->setPublic(!%parameter0%)'
)]

Deprecated

#[ArrayShape]

当您处理类似对象的数组并希望指定键名和值的类型以获得更好的编码辅助时,请使用 Array Shape。

#[ArrayShape([
 // 'key' => 'type',
    'key1' => 'int',
    'key2' => 'string',
    'key3' => 'Foo',
    'key3' => App\PHP8\Foo::class,
])]
function functionName(...): array

如果在一行中指定,则此属性与 PHP ≤ 7.4 兼容。

ArrayShape

#[ObjectShape]

此属性指定可能的对象字段名称及其类型。如果应用,IDE 将建议指定的字段名称并推断指定的类型。

#[ObjectShape(["age" => "int", "name" => "string"])]
function functionName(): object {...}

$obj = functionName();

此用法实际上意味着 $obj 有 2 个字段,名称为 agename,相应的类型为 intstring

#[Immutable]

如果您想确保属性或整个对象在初始化后不会更改,请使用此属性标记它们。

#[Immutable]
class DTO
{
    public string $val;

    public function __construct(string $val)
    {
        $this->val = $val;
    }
}

如果在一行中指定,则此属性与 PHP ≤ 7.4 兼容。

Immutable

#[Pure]

对于没有产生任何副作用的功能,请使用此属性。所有此类 PHP 内部函数已在 PhpStorm 中标记。

#[Pure]
function compare(Foo $a, Foo $b): int
{
    return $a->a <=> $b->b;
}

Pure

#[ExpectedValues]

使用此属性指定函数接受的精确参数值和可以返回的值。这将改进编码辅助。

function response(
    #[ExpectedValues(valuesFromClass: Response::class)] $httpStatusCode,
    //...
) {
    //...
}

ExpectedValues

#[NoReturn]

使用此属性标记终止脚本执行的功能,以获得更精确的控制流分析。

#[NoReturn]
function redirect(): void {
   //...
   exit();
}

NoReturn

#[Language]

将此属性添加到标记包含其他[编程]语言文本的字符串参数,例如 RegExp、SQL 等。这将提高高亮显示并揭示 PhpStorm 的更多功能。

Language

错误和功能请求

请将任何问题报告给 PhpStorm 问题跟踪器 https://youtrack.jetbrains.com/newIssue?project=WI

欢迎提交拉取请求。