PHPStan: 属性 with generic class does not specify its types: TKey, T
PHPStan: Property with generic class does not specify its types: TKey, T
我 运行 PHPStan 在 Symfony 项目中我在 [=26= 中有以下关系]学说实体:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Course\Slide", mappedBy="chapter", cascade={"persist"}, orphanRemoval=true)
* @ORM\OrderBy({"listOrder" = "ASC"})
*
* @var ArrayCollection<Slide>
*/
private $slides;
运行 分析 规则级别 6 我收到以下关于 属性 的消息(及其 getter return类型):
Property App\Entity\Course\Chapter::$slides
with generic class Doctrine\Common\Collections\ArrayCollection
does not specify its types: TKey, T
You can turn this off by setting checkGenericClassInNonGenericObjectType: false
in your phpstan.neon
.
我的编辑尝试只是让 PHPStan 感到困惑,可能是因为我在这里没有完全理解泛型。但是,仅仅因为我不明白消息而将其静音是愚蠢的。
我应该在 PHPDoc 中添加或更改什么?
ArrayCollection
有两个类型变量:TKey 和 T。所以 ArrayCollection<Slide>
是不够的,你需要像 ArrayCollection<int, Slide>
.
这样的东西
是
/**
* @var ArrayCollection<int, Slide>
*/
对父实体执行 dump()
表明 $slides
是一个 0 索引数组:
0 => App\Entity\Slide
1 => App\Entity\Slide
所以它是一个 int
,但不是实体的 ID(因为它还没有持久化)。
这是 Ondřej Mirtes(=PhpStan 的作者)关于泛型的 in-depth 文章:https://medium.com/@ondrejmirtes/generics-in-php-using-phpdocs-14e7301953
我 运行 PHPStan 在 Symfony 项目中我在 [=26= 中有以下关系]学说实体:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Course\Slide", mappedBy="chapter", cascade={"persist"}, orphanRemoval=true)
* @ORM\OrderBy({"listOrder" = "ASC"})
*
* @var ArrayCollection<Slide>
*/
private $slides;
运行 分析 规则级别 6 我收到以下关于 属性 的消息(及其 getter return类型):
Property
App\Entity\Course\Chapter::$slides
with generic classDoctrine\Common\Collections\ArrayCollection
does not specify its types: TKey, T
You can turn this off by settingcheckGenericClassInNonGenericObjectType: false
in yourphpstan.neon
.
我的编辑尝试只是让 PHPStan 感到困惑,可能是因为我在这里没有完全理解泛型。但是,仅仅因为我不明白消息而将其静音是愚蠢的。
我应该在 PHPDoc 中添加或更改什么?
ArrayCollection
有两个类型变量:TKey 和 T。所以 ArrayCollection<Slide>
是不够的,你需要像 ArrayCollection<int, Slide>
.
是
/**
* @var ArrayCollection<int, Slide>
*/
对父实体执行 dump()
表明 $slides
是一个 0 索引数组:
0 => App\Entity\Slide
1 => App\Entity\Slide
所以它是一个 int
,但不是实体的 ID(因为它还没有持久化)。
这是 Ondřej Mirtes(=PhpStan 的作者)关于泛型的 in-depth 文章:https://medium.com/@ondrejmirtes/generics-in-php-using-phpdocs-14e7301953