<?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));
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(Foo)#7 (0) {
}