IteratorAggregate
Интерфейс объектов, которые можно перебрать в `foreach`.
Синтаксис
class Name implements IteratorAggregateВозвращаемое значение
TraversableМетод `getIterator()` возвращает итератор или генератор.
Примеры
Перебор через генератор:
<?php
class Team implements IteratorAggregate
{
public function __construct(private array $members) {}
public function getIterator(): Generator
{
yield from $this->members;
}
}
foreach (new Team(['Anna', 'Oleg']) as $index => $name) {
echo $index, ': ', $name, "\n";
}Результат:
0: Anna
1: OlegПримечания
Это самый короткий способ сделать объект перебираемым. Интерфейс Iterator нужен, только когда перебором надо управлять вручную.
См. также
- Iterator — Интерфейс с пятью методами для ручного управления перебором.
- Generator — Объект, который возвращает функция с `yield`.
- iterator_to_array — Превращает итератор или генератор в массив.
В учебнике
- Встроенные интерфейсы — Интерфейсы PHP, которые учат объект вести себя как массив — Countable, IteratorAggregate, ArrayAccess, JsonSerializable и Stringable.