У меня не получилось найти примера как сделать анонимный генератор в PHP, в итоге разобрался сам.
$generator = function()
{
yield 1;
yield 2;
}
foreach($generator as $item)
{
echo $item;
}
На первый взгляд, этот пример должен работать, но он не работает. Ошибок никаких не выдается, но и результата тоже нет.
Чтобы генератор из анонимной функции заработал, её надо выполнить:
$generator = $generator();
После этого объект типа Closure
превращается в объект типа Generator
, и его можно использовать в цикле.
$closure = function()
{
yield 1;
yield 2;
}
$generator = $closure();
foreach($generator as $item)
{
echo $item;
}
27.01.2020