/**
  * 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;
 }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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());
 }