*/ class EntitySchemaCommand extends ContainerAwareCommand { protected function configure() { $this ->setName('irstea:plantuml:entities') ->setDescription("Génère un schéma PlantUML à partir des métadonnées de Doctrine."); } /** * * @param InputInterface $input * @param OutputInterface $output * * @SuppressWarnings(UnusedFormalParameter) */ protected function execute(InputInterface $input, OutputInterface $output) { /* @var $manager EntityManagerInterface */ $manager = $this->getContainer()->get('doctrine.orm.entity_manager'); $factory = $manager->getMetadataFactory(); $allMetadata = $factory->getAllMetadata(); $classes = array_map( function(ClassMetadata $metadata) { return $metadata->getName(); }, $allMetadata ); $visitor = new EntityVisitor($allMetadata); array_walk($classes, [$visitor, 'visitClass']); $writer = new OutputWriter($output); $writer->write("@startuml\n"); $visitor->outputTo($writer); $writer->write("@enduml\n"); } }