最佳文档(phpdoc)生成器的方法(yield方法)

46

如何为phpdocumentor2记录一个生成器方法?

我认为@return并不适用于yield,但我似乎找不到任何适当的替代方案。

是等待phpdoc追赶的问题吗?


1
在我看来,@return 是合适的,因为它表示你从生成器中得到了什么。 - Anticom
8
目前还没有规定的方法来完成这个操作。你说的 @return 显然是不正确的。最有可能的语法是 @yield V 或者 @return Generator<V>,也许还可以指定 K、S 和 R。另请参见 https://github.com/phpDocumentor/fig-standards/issues/5。 - NikiC
@NikiC,你的回复应该作为答案发布。 - meridius
3个回答

42
我选择了`@return Generator|SomeObject[]`,其中`SomeObject`是被yield的东西。
PhpStorm也很好地处理了这个问题,现在它通常会提示`Generator`方法,并且在迭代时会提示`SomeObject`方法。
(不过,我更喜欢原生的`@yield`。)
更新(2023年):如下面的答案中所建议的那样,现在对于新格式`Generator`也有很好的支持。在这里重复一遍以增加可见性。

1
编辑器提示:Netbeans只需要在@return中使用SomeObject(或\SomeObject)即可提示SomeObject的方法。PhpStorm需要在类型末尾添加额外的[]SomeObject[])。因此,我认为最好的选择是像@Robbert写的那样编写:@return Generator|\SomeObject[] - pmaruszczyk
1
PHP 7之后,Generator->getReturn()怎么样? - SOFe
那将会更难以进行提示。你有什么建议? - Robbert
那是一个非常聪明的解决方案! - AsTeR
这应该是标记的答案。非常有帮助。谢谢。 - Lachezar Todorov
显示剩余2条评论

12

来自 PHP 手册:

当首次调用生成器函数时,会返回一个内部 Generator 类的对象。

因此,严格来说,@return Generator 是正确的,尽管不太描述迭代生成器时可以期望得到什么。


5

还可以手动输入生成器

@return Generator<array|int>

这个 ^^ PhpStorm 可以处理任何 Traversable 返回类型。 - Percutio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接