什么是PHP对象迭代

问题描述:

谁能解释什么是对象迭代和如何代码工作?什么是PHP对象迭代

 
 
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
"; }
+0

大问题,代码是从官方php.net手册[对象迭代(http://php.net/manual/en/language.oop5.iterations.php),我不明白这一点,以及。作者不在乎解释它的作用和原因。 – 2017-02-07 10:09:30

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

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

为什么要使用迭代器?

的迭代器的优点是,它提供了一个高层次的抽象接口,所以调用它不需要太在乎到底是怎么回事的代码。同时,它允许您以块的形式处理大型数据源(从db读取行,从文件读取行),而无需一次将所有内容加载到内存中。