Я никогда раньше не использовал генераторы в 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?
Ваш тип возврата Generator
, но вы используете void
, Попробуй это
public function getDataIncrementally(): Generator {
yield from [/* some large set of numbers*/];
}
Других решений пока нет …