= 9 ? null : $i + 1; return ['cursor' => $next, 'items' => array_fill(0, 5, $i)]; } function listPagedResponse(): Generator { $i = 0; do { $response = listPage($i); foreach ($response['items'] as $item) { yield $item; } } while ($i = $response['cursor']); } /** * The consumer is not aware we're doing multiple API calls */ foreach (listPagedResponse() as $item) { var_dump($item); }