【发布时间】:2013-04-21 15:52:19
【问题描述】:
PHP (5.4.x) 是否允许创建自定义迭代器可以放入 foreach 循环中? (我见过一个相当笨重的迭代器示例)
我正在访问一个 Web API,每次调用只允许一个人提取 N 行/对象,这会导致本地代码笨拙 - 即用于从 API 获取一批数据的外部循环和用于处理元素的内部循环每批。
我更愿意将外部循环推入一个迭代器(它会拉下数据块并跟踪外部 API 等的索引),这样我就可以编写更像这样的代码:
$datastream = new ApiIterator(/*params here*/);
foreach($datastream as $row){
// do inner loop processing here
}
谢谢!
【问题讨论】:
-
是的,由于编写基本迭代器需要大量样板代码,迭代器类可能有点笨拙。您可能有兴趣知道 PHP 5.5(目前处于测试阶段,最终版本即将发布)包含一个称为生成器的功能,它允许与迭代器类似的功能,但代码少得多。仍然存在编写迭代器更好的情况,但生成器将是大多数更简单的迭代器用例的良好替代品。
标签: php