【发布时间】:2013-06-06 13:43:00
【问题描述】:
我有一个相对简单的函数,它使用 foreach
function foo($t) {
$result;
foreach($t as $val) {
$result = dosomething($result, $val);
}
return $result;
}
我想输入提示,Traversable 似乎正是我需要的输入提示
function foo(Traversable $t) {
但是,当使用数组时,这会给出E_RECOVERABLE_ERROR(当然可以在foreach 中使用):example
Argument 1 passed to foo() must implement interface Traversable, array given
有没有办法输入提示或者这是不可能的?
【问题讨论】:
-
来自手册(您发布的链接):
Abstract base interface that cannot be implemented alone. Instead it must be implemented by either IteratorAggregate or Iterator. -
我相信你实际上可以使用
array作为提示,我会测试我的理论,是的,你可以 -
@alfasin 因此任何实现
Iterator的类也将匹配Traversable,因为Iterator是Traversable的子类型。基本 OOP 机制 -
请考虑提供给comment in manual 的解决方案。顺便说一句,I asked a similar question.
-
@Dale 我提前道歉,因为我必须遗漏一些东西:Array don't implement Iterator (AFAIK), and you're trying to use Array, no?