/** * Creates a Descriptor from the provided data. * * @param FileReflector $data * * @return FileDescriptor */ public function create($data) { $fileDescriptor = new FileDescriptor($data->getHash()); $fileDescriptor->setPackage($this->extractPackageFromDocBlock($data->getDocBlock()) ?: $data->getDefaultPackageName()); $packages = new Collection(); $package = $this->extractPackageFromDocBlock($data->getDocBlock()); if (!$package) { $package = $data->getDefaultPackageName(); } $tag = new TagDescriptor('package'); $tag->setDescription($package); $packages->add($tag); $fileDescriptor->getTags()->set('package', $packages); $fileDescriptor->setName(basename($data->getFilename())); $fileDescriptor->setPath($data->getFilename()); $fileDescriptor->setSource($data->getContents()); $fileDescriptor->setIncludes(new Collection($data->getIncludes())); $fileDescriptor->setNamespaceAliases(new Collection($data->getNamespaceAliases())); $this->assembleDocBlock($data->getDocBlock(), $fileDescriptor); $this->addMarkers($data->getMarkers(), $fileDescriptor); $this->addConstants($data->getConstants(), $fileDescriptor); $this->addFunctions($data->getFunctions(), $fileDescriptor); $this->addClasses($data->getClasses(), $fileDescriptor); $this->addInterfaces($data->getInterfaces(), $fileDescriptor); $this->addTraits($data->getTraits(), $fileDescriptor); return $fileDescriptor; }
/** * {@inheritDoc} */ public function classes(array $files) { $classes = []; foreach ($files as $file) { $f = new FileReflector($file); $f->process(); foreach ($f->getClasses() as $class) { $classes[] = $class->getName(); } } return $classes; }
public function actionIndex() { $this->swagger = new Swagger(); $sourceDirs = [Yii::getAlias('@app')]; if (($files = $this->searchFiles($sourceDirs)) === false) { return Controller::EXIT_CODE_ERROR; } foreach ($files as $file) { $reflection = new FileReflector($file); $reflection->process(); foreach ($reflection->getClasses() as $class) { $re = "/\\\\controllers\\\\OrmController\$/"; if ($class->getParentClass() == RunController::CONTROLLER_CLASS && isset($this->moduleMap[preg_replace($re, '', $class->getName())]) && !in_array($class->getName(), self::IGNORE_CONTROLLER_CLASS)) { $this->stdout($class->getName() . "\n"); $this->handleController($class->getName()); } /* if ($class->getParentClass() == RunController::SERVICE_CLASS) { $serviceClass = new ReflectionClass($class->getName()); $methods = $serviceClass->getMethods(\ReflectionMethod::IS_STATIC); foreach ($methods as $method) { $action = $method->getName(); if (!$method->isPublic() || $action == 'className') { continue; } $serviceApi = Yii::createObject('docgen\swagger\service\ServiceApi', [$class->getName(), $action]); $serviceApi->process(); $this->services[] = $serviceApi; } } */ } } foreach ($this->modelClasses as $modelClass) { $model = new Model($modelClass); $this->models[] = $model; } $this->swagger->rests = $this->rests; $this->swagger->models = $this->models; $this->swagger->services = $this->services; $this->swagger->basePaths = $this->basePaths; $apidocPath = Yii::getAlias('@app') . '/web/apidoc'; FileHelper::createDirectory($apidocPath); $this->swagger->output(); return Controller::EXIT_CODE_NORMAL; }
public function addFile($fileName) { $this->files[$fileName] = sha1_file($fileName); $reflection = new FileReflector($fileName, true); $reflection->process(); foreach ($reflection->getClasses() as $class) { $class = new ClassDoc($class, $this, ['sourceFile' => $fileName]); $this->classes[$class->name] = $class; } foreach ($reflection->getInterfaces() as $interface) { $interface = new InterfaceDoc($interface, $this, ['sourceFile' => $fileName]); $this->interfaces[$interface->name] = $interface; } foreach ($reflection->getTraits() as $trait) { $trait = new TraitDoc($trait, $this, ['sourceFile' => $fileName]); $this->traits[$trait->name] = $trait; } }
/** * Adds file to context. * * @param string $fileName */ public function addFile($fileName) { $reflector = new FileReflector($fileName); $reflector->process(); $classes = $reflector->getClasses(); if (count($classes) !== 1) { throw new InvalidParamException("File {$fileName} includes more then one class"); } $this->addControllerDoc($classes[0]->getName()); }