Что такое итерация объекта в php - PullRequest
2 голосов
/ 16 марта 2011

Может кто-нибудь объяснить, что такое итерация объекта и как работает этот код?

<CODE>
class MyIterator implements Iterator{
   private $var = array();
   public function __construct($array){
       if (is_array($array)) {
           $this->var = $array;
       }
   }
   public function rewind() {
       echo "rewinding<br>";
       reset($this->var);
   }
   public function key() {
       $var = key($this->var);
       echo "key: $var<br>";
       return $var;
   }
   public function next() {
       $var = next($this->var);
       echo "next: $var<br>";
       return $var;
   }
   public function valid() {
       $var = $this->current() !== false;
       echo "valid: {$var}<br>";
       return $var;
   }
      public function current() {
       $var = current($this->var);
       echo "current: $var<br>";
       return $var;
   }
}

$values = array(1,2,3);
$it = new MyIterator($values);

foreach ($it as $a => $b) {
   print "$a: $b<br>";
}

</CODE>

1 Ответ

2 голосов
/ 16 марта 2011

Интерфейс Iterator , вероятно, основан на Java Iterators. Он предоставляет общий интерфейс для непрерывной итерации по списку элементов с использованием конструкции foreach.

Ваш код определяет класс, который реализует этот интерфейс. По сути, он обеспечивает те же функциональные возможности, которые поддерживает массив, но добавляет некоторые операторы echo.

Зачем использовать итераторы?

Преимущество Итератора заключается в том, что он предоставляет высокоуровневый абстрагированный интерфейс, поэтому вызывающему его коду не нужно сильно беспокоиться о происходящем. В то же время он позволяет обрабатывать большие источники данных (извлечение строк из БД, чтение строк из файла) в виде фрагментов без необходимости загружать все данные в память сразу.

...