PHP 文档块中的@template 注解是什么意思?

What does the annotation @template mean in PHP doc blocks?

我可以在 FakerPHP/Faker package, and I'm not aware what does @template mean? you can find it in the package's main branch on this line

中看到这个 PHPDoc 块
/**
 * @template T of Extension\Extension
 *
 * @param class-string<T> $id
 *
 * @throws ContainerExceptionInterface
 * @throws Extension\ExtensionNotFound
 *
 * @return T
 */

@template 注释涉及一个称为泛型的概念,PHP 目前不存在该概念,但它是一种动态描述参数或 return 类型内容的方式在实例化 class 或调用方法之前未知。

对于 PHP 具体而言,here is an article describing the doc blocks themselves and how to use them

对于您引用的代码,模板指定 T 将是 Extension\Extension 的一个实例。 $id 参数将是 T 的 class 名称,@return 表示该方法将 return T 的一个实例。

使用该方法类似于 $faker->ext(MyExtension::class),这将 return MyExtension 的一个实例。

想追兔子,here is more on Generic Programming