/** * @param $config * @param ContainerBuilder $container * @param $class * @param $classContainerParameter */ protected function injectClassManagerService($config, ContainerBuilder $container, $class, $classContainerParameter) { $id = $this->containerIdGenerator->getManagerServiceId($class); if ($container->hasDefinition($id)) { return; } $managerClass = $this->containerIdGenerator->guessManagerClass($class, $config['dir']); if (!class_exists($managerClass) && $config['auto']) { $def = $this->definitionFactory->createManagerByFactoryDefinition($classContainerParameter); $container->setDefinition($id, $def); } elseif (class_exists($managerClass)) { $reflClass = $this->reflectionFactory->createReflectionClass($managerClass); if ($reflClass->isAbstract() || !$reflClass->isSubclassOf('Knd\\Bundle\\RadBundle\\Manager\\Manager')) { return; } $classContainerParameter = $this->containerIdGenerator->getContainerParameter($class); $managerClassContainerParameter = $this->injectClassContainerParameter($container, $managerClass); $def = $this->definitionFactory->createManagerDefinition($classContainerParameter, $managerClassContainerParameter); $container->setDefinition($id, $def); } }