Project Icon

phpstorm-attributes

PhpStorm中的PHP 8属性集优化代码分析与完成

phpstorm-attributes项目为PhpStorm提供了一套PHP 8属性,用于增强代码完成和静态分析功能。这些属性包括Deprecated、ArrayShape、ObjectShape、Immutable、Pure、ExpectedValues、NoReturn和Language,能够帮助开发者更准确地定义和分析代码结构。通过使用这些属性,开发者可以提高代码质量,优化开发体验,从而提升PHP编程的效率和准确性。

JetBrains官方项目

PhpStorm属性

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

了解更多信息,请查看博客文章

安装

这些属性在PhpStorm 2020.3及以后版本中可用。它们已经与PhpStorm捆绑在一起,所以你不需要单独安装。

如果你正在使用其他静态分析工具,并且不想遇到"找不到类"的问题,那么你可能需要将属性包作为开发依赖添加到你的composer.json中:

composer require --dev jetbrains/phpstorm-attributes

#[Deprecated]

当你想通知用户某个实体将在未来被移除时,使用此属性。

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

#[Deprecated(
    reason: '自Symfony 5.2起,请使用setPublic()代替',
    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 上报告任何问题。

欢迎提交拉取请求。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号