问题描述
namespace Some\Space\Utility;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
/**
* @psalm-template T
*/
class SomeAdapter
{
/**
* Some method
*
* @psalm-param iterable<int,T> $data
*
* @psalm-return Collection<int,T>
*/
public static function doSomething($data): Collection
{
if (is_array($data)) {
$data = new ArrayCollection($data);
}
return $data;
}
}
可能我错过了一些东西,但是我遇到了@psalm-param
的以下错误:
诗篇:UndefinedDocblockClass:Docblock定义的类或接口Some \ Space \ Utility \ T不存在
解决方法
问题在于该函数是静态的。这是正确的解决方案:
/**
* Some method
*
* @psalm-template T
* @psalm-param iterable<int,T> $data
*
* @psalm-return Collection<int,T>
*/
必须在方法上定义模板。