【问题标题】:Define a Custom Iterator in PHP 5.4.x?在 PHP 5.4.x 中定义自定义迭代器?
【发布时间】: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


【解决方案1】:

从 PHP 5.0 开始可以,您需要使用 PHP 的 Class Iterator 接口(@98​​7654321@)并在您的 ApiIterator 类中扩展(实现)它

【讨论】:

    猜你喜欢
    • 2013-02-17
    • 2015-02-04
    • 1970-01-01
    • 2015-11-19
    • 2013-09-02
    • 2016-04-05
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多