- Output for 8.1.3 - 8.1.30, 8.2.21 - 8.2.25, 8.3.5 - 8.3.14
- object(Foo)#5 (0) { } object(Foo)#6 (0) { }
<?php
class Foo {}
class Foos implements IteratorAggregate {
private function __construct(private readonly Closure $foos) {}
public static function fromVariadic(Foo ...$foos): self {
return new self(fn() => yield from $foos);
}
public static function fromGenerator(callable $generator): self {
return new self($generator);
}
public function getIterator(): \Traversable {
return ($this->foos)();
}
}
//$foos = Foos::fromVariadic(new Foo, new Foo);
$foos = Foos::fromGenerator(function() {
yield new Foo;
yield new Foo;
});
foreach ($foos as $foo) {
var_dump($foo);
}