вопрос был об интерфейсе класса
php way:
class Itertator {
function valid(){ ... } // проверяет, есть ли еще элементы
function current(){ ... } // возвращает текущий элемент
function next(){ ... } // переходим к следующему и возвращаем его
}
используем, например, так:
for( $i=new Iterator(); $i->valid(); $i->next() )
... $i->current() ...
но так теряются возвращаемые значения ($i->next() возвращает следующий). Поэтому я бы сделал, чтобы он возвращал текущий и переходил к следующему. А current сделал бы через next, т.е. созраняем состояние, получаем с помощью next текущий, и восстанавливаем состояние (позицию), чтобы не дублировать код
java way:
class Iterator {
function hasNext(){ ... } // проверяем, есть ли еще элементы
function next(){ ... } // переходим к следующему и возвращаем его
}
использование:
while( i.hasNext() )
... i.next() ...
по сравнению с php-вариантом, не теряются значения и не надо реализовывать current через next
как бы сделали вы? Или прочие другие мысли...