* @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:----bmjuV7VKSS0P/yR36tEbOBtbs8ub4ioew8EPA5NjpgwefIMeSmK0lY7WV5g5Q1g7dGuSSVwcm4wVYA8+n0I8xydLtR4VWZYe94zMkpaDqE90WuAk2BgkC1FD1gEk5zNOPSIq6iUAZ+LxEFd8uYkrpNMBtWOYqXkMNbUytWgJl84Ove+gxlAGgbrzy19uhir5Bn3LxaDHRmWk6d2OvPC6SCyCuvAz3+qe/nh+qj+BrQHn4+RDnoG99g9s94oHAeYK3ELV9VT0PQyAHoViDJRdq2R8F7hMZ16j8O2OzY8dRxGleR3wvfKUtcq4025WfusvpyTLD6jTUSPYVPnlSzaHCcJiq7cqmcaRNpqKGtvtoN7EN0w2AAiae5auNlSILaKEuTXSR796E/AGS+6eSo+lZfRrGndoiBnKOgQ2eUt8xpvpp5m4S3LzaqTWtDV18nup7W4+UroofER1MQPYGnP3UzfVxy+3sUfIAP2kWn8OyWmpQzO7wOdB3mNyFMHaQi3XwN3ZaJauADEdCBslNDwuDrjJvy8jejz0AbuKVOayZg6ReSvFw8wEvohSA0EG+ILr3IRLIlTVL38ssn3KjIBdiSn/YTp59XHmYlrflP8WUORdteliRdE9zDUAAW+OKYwewpKfJhpmSPkwozuPSdJZh6CeutrR9wkFlfs7fEyILjY=----ATTACHMENT:----Mjk1OTg3MzM0Nzk1MjI4NCA0MjIzMTI2MDM2MjgzOTE4IDQ4MTk3MjE3MDAzNjA5NDc=