foreach(call_user_func(function () {for ($i = 0; $i < 10; $i++) yield $i;}) as $i) echo $i;
Т.е. имеем такой синтаксис для "одноразовых" генераторов
$generator = call_user_func(function () {
while(1) {
yield generate_something();
}
});