addArgument( 'factory-class', InputArgument::OPTIONAL, 'Choose a name for your factory (e.g. MyEntityFactory)' )*/ ->addArgument( 'namespace', InputArgument::OPTIONAL, 'Namespace (e.g. Lc\SovBundle\Factory)' ) ->addArgument( 'domain', InputArgument::OPTIONAL, 'Domain (e.g. Order)' ) ->addArgument( 'entity-class', InputArgument::OPTIONAL, 'Define the entity (e.g. MyEntity)' ) ->setHelp(''); } public function generate(InputInterface $input, ConsoleStyle $io, Generator $generator) { $entityDetails = $generator->createClassNameDetails( $input->getArgument('entity-class'), 'Entity\\', '' ); $factoryClass = $input->getArgument('entity-class') . 'Factory'; $factoryDetails = $generator->createClassNameDetails( $factoryClass, 'Factory\\', '' ); $options = [ 'namespace_path' => $input->getArgument('namespace'), 'domain' => $input->getArgument('domain'), 'entity_class' => $input->getArgument('entity-class'), 'entity' => $entityDetails->getFullName(), 'entity_variable' => '$' . u($input->getArgument('entity-class'))->camel() ]; $generator->generateController( $factoryDetails->getFullName(), __DIR__ . '/../Resources/maker/factory/factory.tpl.php', $options ); $interfaceName = $factoryClass . 'Interface'; $generator->generateFile( $generator->getRootDirectory() . '/src/Factory/' . $interfaceName . '.php', __DIR__ . '/../Resources/maker/factory/factory_interface.tpl.php', [ 'namespace_path' => $input->getArgument('namespace'), 'domain' => $input->getArgument('domain'), 'interface_name' => $interfaceName, ] ); $generator->writeChanges(); $this->writeSuccessMessage($io); $io->text('Next: Open your new factory class and configure it!'); } public function configureDependencies(DependencyBuilder $dependencies) { $dependencies->addClassDependency( Annotation::class, 'doctrine/annotations' ); } }