PHP 文档块中的注释 @template 意味着什么?

She*_*rek 8 php documentation phpdoc docblocks faker

我可以在FakerPHP/Faker包中看到这个 PHPDoc 块,但我不知道这是什么@template意思?您可以在该行的包的主分支中找到它

/**
 * @template T of Extension\Extension
 *
 * @param class-string<T> $id
 *
 * @throws ContainerExceptionInterface
 * @throws Extension\ExtensionNotFound
 *
 * @return T
 */
Run Code Online (Sandbox Code Playgroud)

小智 9

@template 注释与一个称为泛型的概念相关,该概念目前在 PHP 中不存在,但它是一种动态描述参数或返回类型内容的方法,在实例化类或调用方法之前,这些参数或返回类型是未知的。

特别是对于 PHP,这里有一篇文章描述了文档块本身以及如何使用它们

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

使用该方法类似于 $faker->ext(MyExtension::class),它将返回 MyExtension 的实例。

如果你想跟随兔子,这里有更多关于通用编程的内容