За последние 24 часа нас посетили 18772 программиста и 1702 робота. Сейчас ищут 879 программистов ...

Для чего используется интерфейс Iterator

Тема в разделе "PHP для новичков", создана пользователем kentkent7, 30 май 2018.

  1. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Доброго времени суток.

    Подскажите, для чего нужен данный интерфейс "какие проблемы решает"?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Для того, чтобы объект твоего класса мог использоваться в конструкции foreach также, как обычный массив. В документации это описано.
     
  3. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Я читал документацию, но так и не понял его основную область применения, я могу перебирать массив объектов без этого интерфейса.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @kentkent7 он нужен чтобы сам объект твоего класса, а не массив с объектами, передать в foreach, а так же в функции next(), current() и т.д. Хотя недавно появилось более изящное решение в виде генераторов.
     
    kentkent7 нравится это.
  5. kentkent7

    kentkent7 Новичок

    С нами с:
    30 июн 2017
    Сообщения:
    72
    Симпатии:
    5
    Разобрался, спасибо!
     
  6. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    А я думал, что основная цель - работа с большими массивами, с которыми родной foreach справляется плохо :)
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    @Walk, интерфейс ни с чем не работает по определению :)
    --- Добавлено ---
    Есть, конечно, такая штука: https://php.ru/manual/class.arrayobject.html, но я ни разу не пользовался
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @Walk из за того что объект не копируется по воле пхп, итератор может быть экономичнее в плане памяти.
     
  9. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    знаю, мало ли как человек объект называет.

    я об этом и написал)) и не может быть, а точно экономнее. И чем больше массив - тем разумнее использовать итератор.