什么是PHP中的对象迭代

时间:2011-03-16 09:33:55

标签: php iterator spl

任何人都可以解释什么是对象迭代以及此代码的工作原理?


class MyIterator implements Iterator{
   private $var = array();
   public function __construct($array){
       if (is_array($array)) {
           $this->var = $array;
       }
   }
   public function rewind() {
       echo "rewinding
"; reset($this->var); } public function key() { $var = key($this->var); echo "key: $var
"; return $var; } public function next() { $var = next($this->var); echo "next: $var
"; return $var; } public function valid() { $var = $this->current() !== false; echo "valid: {$var}
"; return $var; } public function current() { $var = current($this->var); echo "current: $var
"; return $var; } } $values = array(1,2,3); $it = new MyIterator($values); foreach ($it as $a => $b) { print "$a: $b
"; }

1 个答案:

答案 0 :(得分:2)

Iterator接口可能受到Java Iterators的启发。它提供了一个通用接口,可以使用foreach构造继续迭代项列表。

您的代码定义了一个实现此接口的类。它基本上提供了与本机支持的数组相同的功能,但添加了一些echo语句。

为什么要使用迭代器?

Iterator的优点是它提供了一个高级抽象接口,因此调用它的代码不需要担心发生了什么。同时,它允许您以块的形式处理大型数据源(从数据库中获取行,从文件中读取行),而无需一次将所有内容加载到内存中。