Iterable — это псевдотип, появившийся в PHP 7.1. Он принимает любой массив или объект, реализующий интерфейс Traversable . Оба этих типа можно повторять с помощью foreach и использовать с yield внутри генератора .

Использование итерируемых объектов

Iterable можно использовать в качестве типа параметра, чтобы указать, что функции требуется набор значений, но не важна форма набора значений, поскольку она будет использоваться с foreach . Если значение не является массивом или экземпляром Traversable , будет выброшено исключение TypeError .

Пример #1 Пример итерируемого типа параметра

<?php

function foo(iterable $iterable) {
    foreach ($iterable as $value) {
        // ...
    } 
}

?>

Параметры, объявленные как итерируемые, могут использовать nullили массив в качестве значения по умолчанию.

Пример #2 Пример значения по умолчанию итерируемого параметра

<?php

function foo(iterable $iterable = []) {
    // ...
}

?>

Iterable также может использоваться в качестве типа возвращаемого значения, чтобы указать, что функция будет возвращать итерируемое значение. Если возвращаемое значение не является массивом или экземпляром Traversable , будет выброшено исключение TypeError .

Пример #3 Пример итерируемого возвращаемого типа

<?php

function bar(): iterable {
    return [1, 2, 3];
}

?>

Функции, объявляющие iterable в качестве возвращаемого типа, также могут быть генераторами .

Пример #4 Пример возвращаемого значения итерируемого генератора

<?php

function gen(): iterable {
    yield 1;
    yield 2;
    yield 3;
}

?>