* @author Matthieu Napoli */ class FactoryParameterResolver implements ParameterResolver { /** @var ContainerInterface */ private $container; public function __construct(ContainerInterface $container) { $this->container = $container; } public function getParameters( ReflectionFunctionAbstract $reflection, array $providedParameters, array $resolvedParameters, ): array { $parameters = $reflection->getParameters(); // Skip parameters already resolved if (! empty($resolvedParameters)) { $parameters = array_diff_key($parameters, $resolvedParameters); } foreach ($parameters as $index => $parameter) { $parameterType = $parameter->getType(); if (!$parameterType) { // No type continue; } if (!$parameterType instanceof ReflectionNamedType) { // Union types are not supported continue; } if ($parameterType->isBuiltin()) { // Primitive types are not supported continue; } $parameterClass = $parameterType->getName(); if ($parameterClass === 'Psr\Container\ContainerInterface') { $resolvedParameters[$index] = $this->container; } elseif ($parameterClass === 'DI\Factory\RequestedEntry') { // By convention the second parameter is the definition $resolvedParameters[$index] = $providedParameters[1]; } elseif ($this->container->has($parameterClass)) { $resolvedParameters[$index] = $this->container->get($parameterClass); } } return $resolvedParameters; } } __halt_compiler();----SIGNATURE:----Jdl0SWVvMPmRJFFuiDKoCUS47BqTjpgimW377BuNA7FNmOYO9//swjaobq+6L6MfJNcRTMlBrBP2SGq44XYbr6r0dB6rZIz2jO68FVfb0M5xZ+P3XEHAD8yypxPTu/OuVyp1jETW8hrdqG5tposf7bc+aiiNy0P8TwOWEjNGQjhANQWBAfsiGROGV0CjlenTXUEfKMOc0lsFa7M48XXX9q24T3ikD6w0sMqo4ufWNeS4TTMwF7eMPEPPmMr/aJDQuYBif1fSluLsvDbXoxORN/hgWql6gHsfMd6LFCrbdrwbmYaqnxI224MFFmadws7vy/eN1OO4RlPxr98ZpbsGUye9Vsmty8P2V2GDNI1u7evqE0H7udWcZU4fvMhJN5FG1VxwWb+BIhn2e/Id1JXi2NHqE6Vi+q/1XOWO6FvU+XVYTEMF1l/joGnqC7LJMP4z52X2YtmiiCjv//Gb045NUXAZSNLygITGqWsvr7ZghytQM3KC1vz4J4uy0pobZvNGb5Cw/Dg/gLkS4YVYldgVQYp+2AB82aJy9wWBr90kWOkqSi0gTUtNq/sM1oiwbE1XRm5+UuE5p61YThiyqvcu7pVG2UJ39qe5H2soAeMZf+q+72p2ZmO66hZRyAUEnoU6sE9KBypMSywv6DF0WObUvdMoZJO9xHGo4JMwwlAx6fw=----ATTACHMENT:----NzM1MzQ3MjUxODk1NTE3IDcyNTQ0NjE1NzQ2Nzc4NDMgNTI2NjI2NjUwOTkxNjE4Mg==