PHP возвращаемый тип генератора - PullRequest
0 голосов
/ 09 февраля 2019

Я никогда раньше не использовал генераторы в PHP, и в документации нет примеров, показывающих объявление возвращаемого типа.

В PhpStorm в IDE возникает ошибка, когдаЯ делаю это:

public function getDataIncrementally(): void {
    yield from [/* some large set of numbers*/];
}

Ошибка:

Генераторы могут объявлять только возвращаемый тип Generator, Iterator или Traversable, или итерируемый, void недопустим.

Я вижу дерево наследования Traversable -> Iterator -> Generator.Между тем, iterable - это новый псевдотип, введенный в PHP 7.1.

Было бы целесообразно использовать iterable для объявления возвращаемого типа, если мне нужно только поддерживать PHP>= 7.1?

1 Ответ

0 голосов
/ 09 февраля 2019

Ваш тип возврата - Generator, но вы используете void.Попробуйте следующее:

public function getDataIncrementally(): \Generator {
    yield from [/* some large set of numbers*/];
}
...