【发布时间】:2015-02-01 10:48:26
【问题描述】:
具体说明
- 我正在使用 PHPStorm 8 IDE。
- 假设我们有一些类
Foo,它实现了\Iterator接口,并且我们知道该迭代器中的所有项目都是Bar类的实例。
问题
如何暗示Foo 是可迭代的并且只包含Bar 的项目?当然,提示应该保留信息,它是Foo的实例
到目前为止我尝试了什么
如果我们有一个Bar 实例数组,那么这很容易(例如,在this 问题中进行了描述):Bar[]。此外,如果打算遍历Foo,它仍然可以(或多或少)解决:
//assume that $foo is instance of Foo
//..
/* @var $object Bar */
foreach ($foo as $object) {
}
但是,有一个非常重要的事情是就地提示无法实现的:返回类型。如果我有一些方法应该返回Foo,我只知道如何提示Foo,但该函数的用户仍然无法公开,它实际上是可迭代的并且包含Bar 实例(如果我指定@return Bar[] 以防Bar 实例的数组,就像这样)
【问题讨论】: