3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Foo {} class Bar { private $foos; public function __construct(callable ...$foos) { $this->foos = $foos; } public function getFoo($id) : Foo { return $this->foos[$id](); } } class Baz { public function run($id) : Foo { return (new Bar( function(){ return new Foo; }, function(){ return new Foo; }, function(){ return new Foo; }, function(){ return new Foo; } ))->getFoo($id); } } var_dump((new Baz)->run(2));

preferences:
57.29 ms | 402 KiB | 5 Q