用于静态分析工具的属性,代替PHPDocs

0.3.1 2024-09-13 07:46 UTC

This package is auto-updated.

Last update: 2024-09-13 07:46:55 UTC


README

Continuous Integration Latest Stable Version License Total Downloads

自PHP 8.0发布以来,越来越多的库、框架和工具已更新为使用属性而非PHPDocs中的注释。

然而,像PHPStan或Psalm这样的静态分析工具,以及像PhpStorm或VS Code这样的IDE,还没有过渡到属性,它们仍然依赖于PHPDocs中的注释来完成许多功能。

这个库旨在提供一套PHP属性,这些属性可以替代这些工具最常用的注释,并旨在为相关仓库提供扩展或插件,以便在这些工具中使用这些属性。

特别是,这些仓库包括

示例

为了展示使用这些属性后代码的样式,我们可以看以下示例。这是当前注释的类样式

<?php

class ArrayAdder
{
    /** @var array<string>  */
    private array $result;

    /**
     * @param array<string> $array1 the first array
     * @param array<string> $array2 the second array
     * @return array<string>
     */
    public function addArrays(array $array1, array $array2): array
    {
        $this->result = $array1 + $array2;
        return $this->result;
    }
}

这是使用新属性的样式

<?php

use PhpStaticAnalysis\Attributes\Type;
use PhpStaticAnalysis\Attributes\Param;
use PhpStaticAnalysis\Attributes\Returns;

class ArrayAdder
{
    #[Type('array<string>')]
    private array $result;

    #[Param(array1: 'array<string>')] // the first array
    #[Param(array2: 'array<string>')] // the second array
    #[Returns('array<string>')]
    public function addArrays(array $array1, array $array2): array
    {
        $this->array = $array1 + $array2;
        return $this->array;
    }
}

安装

要使用这些属性,请在Composer中引入此库

composer require php-static-analysis/attributes

然后安装您使用的工具所需的任何扩展或插件。

已实现的属性列表

这些是可用的属性及其对应的PHPDoc注释

PhpStorm支持

需要创建一个完全支持这些属性的插件。在此准备好之前,您可以通过安装PHPStan、我们的PHPStan扩展并在PhpStorm中启用PHPStan支持(如此处所述)来获得部分支持。您将能够看到代码中与这些属性相关的错误和消息。

或者安装Psalm、我们的Psalm扩展并在PhpStorm中启用Psalm支持(如此处所述)

VS Code支持

需要创建一个完全支持这些属性的扩展。在此准备好之前,您可以通过安装PHPStan、我们的PHPStan扩展和VS Code扩展(例如这个)来获得部分支持。当您启用扩展时,您将能够看到代码中与这些属性相关的错误和消息。

或者安装Psalm、我们的Psalm扩展和VS Code扩展(例如这个

赞助此项目

如果您想支持此项目的开发,请考虑赞助我