/** * @param BundleInterface $bundle * @param string $entity * @param ClassMetadataInfo $metadata * @param ArrayCollection $options * * @throws \RuntimeException */ public function generate(BundleInterface $bundle, $entity, ClassMetadataInfo $metadata, ArrayCollection $options = null) { $dir = $bundle->getPath(); $parts = explode('\\', $entity); $entityClass = array_pop($parts); $entityNamespace = implode('\\', $parts); $this->setGeneratedName($entityClass . "Manager.php"); $target = sprintf('%s/Entity/Manager/%sManager.php', $dir, $entityClass); $this->setFilePath($target); $interfaceTarget = sprintf('%s/Entity/Manager/%sManagerInterface.php', $dir, $entityClass); if (file_exists($target) && !$options->get('overwrite')) { throw new \RuntimeException(sprintf('Unable to generate the manager class %s as it already exists.', $target)); } if (!is_dir(dirname($target))) { mkdir(dirname($target)); } $entityReflection = new \ReflectionClass($bundle->getNameSpace() . '\\Entity\\' . $entity); $constructorMethod = $entityReflection->hasMethod('__construct') ? $entityReflection->getMethod('__construct') : null; $this->renderFile('manager/manager.php.twig', $target, ['entity' => $entity, 'entity_class' => $entityClass, 'namespace' => $bundle->getNamespace(), 'entity_namespace' => $entityNamespace, 'entity_construct_params' => $this->generateParams($constructorMethod), 'contruct_params' => $this->generateConstructParams($constructorMethod)], $options->get('overwrite')); $this->renderFile('manager/interface.php.twig', $interfaceTarget, ['entity' => $entity, 'entity_class' => $entityClass, 'namespace' => $bundle->getNamespace(), 'entity_namespace' => $entityNamespace, 'entity_construct_params' => $this->generateParams($constructorMethod), 'contruct_params' => $this->generateConstructParams($constructorMethod)], $options->get('overwrite')); $this->declareService($bundle, $entity); }