我有一个实现ArrayAccess,Iterator和Countable的对象.这产生了一个非常完美的阵列掩蔽.我可以使用offsets($object[foo]
)访问它,我可以将它放入foreach
-loop和许多其他东西.
但我不能做的是把它交给本地阵列迭代器函数(next()
,reset()
,current()
,key()
),即使我已经实现了从迭代器所需要的方法.PHP似乎顽固地试图遍历其成员变量,并完全忽略迭代器方法.
是否有一个接口可以将对象挂钩到剩余的数组遍历函数,还是我坚持使用我拥有的东西?
更新: IteratorAggregate似乎也不是答案.虽然它在foreach
-loops中使用,但基本数组迭代器函数不会调用方法.
最近的PHP更改阻止使用标准数组函数(重置,下一步等)操纵ArrayIterators表单.
这应该很快恢复:http: //news.php.net/php.internals/42015