*Зачем вообще нужны шаблоны итераторов?*

Так что я откинулся на спинку кресла, весь расслабленный и дерьмовый, восстанавливая свои знания о шаблонах проектирования, все идет хорошо и прекрасно, пока я жду выходного адреналина. Моя жизнь не может быть более гладкой. Следующее, что вы знаете... Я получаю самое большое осознание дня моей жизни.

Зачем нам нужен паттерн Iterator? Или лучше сформулировать как

Нужен ли нам шаблон Iterator в наши дни?

Так как я носитель языка PHP. Легко, я просматривал официальный документ DOC.

Таким образом, через различные примеры Руба Голдберга в комментариях шаблон продолжает создавать различные объекты, передавая им массив, только для того, чтобы в конечном итоге перебирать элементы, используя foreach() или while(), поэтому мой вопрос заключается в том, где в общей схеме вещей происходит этот шаблон подходит, или не могли бы мы просто перебрать сам array в первую очередь или как всегда ....

Я что-то упустил?

Пример:

<?php
class myIterator implements Iterator 
    {
    private 
        $_array = array();
    public function __construct(array $array) 
        {
        $this->_array = $array;
        }
    public function rewind() 
        {
        reset($this->_array);
        }
    public function current() 
        {
        return current($this->_array);
        }
    public function key() 
        {
        return key($this->_array);
        }
    public function next() 
        {
        next($this->_array);
        }
    public function valid() 
        {
        return $this->key() !== null;
        }
    }

$it = new myIterator(array('foo_1' => 'bar_1','foo_2' => 'bar_2'));

//example 1 : foreach

foreach($it as $key => $value) 
    {
    var_dump($key, $value);
    }

//example 2 : while

$it -> rewind();
while($it->valid())
    {
    var_dump($it->key(), $it->current());

    $it->next();
    }

//example 3 : for

for($it->rewind();$it->valid();$it->next())
    {
   var_dump($it->key(), $it->current());
    }
?>

person Mohd Abdul Mujib    schedule 16.12.2016    source источник
comment
Я действительно не понимаю, на что вы надеетесь в ответе, как вы применяете логику и/или проходите набор thing без итератора?   -  person Kritner    schedule 16.12.2016
comment
Просто потому, что ваш пример является итератором для итерации чего-то, что уже итерируется в любом случае, не означает, что каждый итератор предназначен для итерации по существующей итерации, но, возможно, учтите, что он может сделать что-то неитерируемым итерируемым   -  person Mark Baker    schedule 16.12.2016
comment
Пожалуйста, остановите mollycoddling этот ответ, отредактировав его, его формулировка точно передает мои эмоции.!!!   -  person Mohd Abdul Mujib    schedule 16.12.2016
comment
@MarkBaker Вау!!!! Вот это суперкрутая скороговорка!!!! Кстати, любая ссылка/указатель на какой-либо ресурс для примера, который пытается преобразовать неитерируемый в итерируемый? Пожалуйста?   -  person Mohd Abdul Mujib    schedule 16.12.2016
comment
@Kritner Я надеюсь на отличный ответ, который кратко определяет шаблон итератора, предоставляет хороший и простой пример, объясняющий, в каких сценариях он может быть полезен.   -  person Mohd Abdul Mujib    schedule 16.12.2016
comment
PHP — причины использовать итераторы?   -  person WEBjuju    schedule 16.12.2016
comment
@WEBjuju Спасибо, благодаря вашим потрясающим навыкам Google-Fu, теперь я могу расслабиться, потягивая ананасовый безалкогольный коктейль. #ПроголосовалиЗаЗакрытие :-*   -  person Mohd Abdul Mujib    schedule 16.12.2016
comment
Прекрасным примером может служить итерация по дереву объектов, например b-дереву, которое по своей сути не является итерируемым.   -  person Mark Baker    schedule 16.12.2016