public function process(ContainerBuilder $container)
{
$this->parameterBag = $parameterBag = $container->getParameterBag();
try {
$preferredServices = (array) $parameterBag->resolveValue("%autowiring.preferred_services%");
} catch (ParameterNotFoundException $exception) {
$preferredServices = [];
}
try {
$fastAnnotationChecksRegex = "/" . implode("|", array_map(function ($s) {
return preg_quote($s);
}, (array) $parameterBag->resolveValue("%autowiring.fast_annotation_checks%"))) . "/";
} catch (ParameterNotFoundException $exception) {
$fastAnnotationChecksRegex = null;
}
foreach ($container->getDefinitions() as $serviceId => $definition) {
if ($this->canDefinitionBeAutowired($serviceId, $definition) === false) {
continue;
}
try {
$className = $parameterBag->resolveValue($definition->getClass());
$reflectionClass = new ReflectionClass($className);
$this->autowireClass($className, $reflectionClass, $definition, $fastAnnotationChecksRegex, $preferredServices, $parameterBag);
// add files to cache
$container->addClassResource($reflectionClass);
} catch (AutowiringException $exception) {
throw new AutowiringException(sprintf("%s (service: %s)", $exception->getMessage(), $serviceId), $exception->getCode(), $exception);
}
}
}