/** * Perform command. * * @param Documenter $documenter */ public function perform(Documenter $documenter) { if ($this->container->hasBinding(\Spiral\ODM\Entities\SchemaBuilder::class)) { $odmBuilder = $this->container->get(\Spiral\ODM\Entities\SchemaBuilder::class); } else { $odmBuilder = $this->odm->schemaBuilder(); } if ($this->container->hasBinding(\Spiral\ORM\Entities\SchemaBuilder::class)) { $ormBuilder = $this->container->get(\Spiral\ORM\Entities\SchemaBuilder::class); } else { $ormBuilder = $this->orm->schemaBuilder(); } /** * @var ODMStormDocumenter $odmDocumenter */ $odmDocumenter = $this->container->get(ODMStormDocumenter::class, ['builder' => $odmBuilder]); $odmDocumenter->document(); $odmDocumenter->render($documenter->config()['phpstorm']['odm']); $this->writeln("<comment>ODM virtual documentation were created:</comment> {$odmDocumenter->countClasses()} classes"); /** * @var ODMStormDocumenter $odmDocumenter */ $ormDocumenter = $this->container->get(ORMStormDocumenter::class, ['builder' => $ormBuilder]); $ormDocumenter->document(); $ormDocumenter->render($documenter->config()['phpstorm']['orm']); $this->writeln("<comment>ORM virtual documentation were created:</comment> {$ormDocumenter->countClasses()} classes"); }
/** * Add new ClassElement into file under specified namespace. * * @param ClassElement $element * @param string $namespace Virtual namespace by default. * @return string */ protected function addClass(ClassElement $element, $namespace = null) { if (is_null($namespace)) { $namespace = $this->documenter->config()['namespace']; } if (!isset($this->namespaces[$namespace])) { $this->namespaces[$namespace] = new NamespaceElement(trim($namespace, '\\')); $this->file->addNamespace($this->namespaces[$namespace]); } $this->namespaces[$namespace]->addClass($element); $this->countClasses++; return '\\' . trim($namespace, '\\') . '\\' . $element->getName(); }