示例#1
0
 /**
  * @param FileInfo $file
  *
  * @throws CollectorException
  * @throws \TheSeer\phpDox\ProgressLoggerException
  *
  * @return bool
  */
 private function processFile(SourceFile $file)
 {
     try {
         if ($file->getSize() === 0) {
             $this->logger->progress('processed');
             return true;
         }
         $result = $this->backend->parse($file);
         if ($result->hasClasses()) {
             foreach ($result->getClasses() as $class) {
                 $this->project->addClass($class);
             }
         }
         if ($result->hasInterfaces()) {
             foreach ($result->getInterfaces() as $interface) {
                 $this->project->addInterface($interface);
             }
         }
         if ($result->hasTraits()) {
             foreach ($result->getTraits() as $trait) {
                 $this->project->addTrait($trait);
             }
         }
         $this->logger->progress('processed');
         return true;
     } catch (ParseErrorException $e) {
         $this->parseErrors[$file->getPathname()] = $e->getPrevious()->getMessage();
         $this->logger->progress('failed');
         return false;
     } catch (\Exception $e) {
         throw new CollectorException('Error while processing source file', CollectorException::ProcessingError, $e, $file);
     }
 }
示例#2
0
 /**
  * @param AbstractEvent $event
  * @param bool          $progress
  */
 private function handleEvent(AbstractEvent $event, $progress = TRUE)
 {
     $eventType = $event->getType();
     if (isset($this->enrichers[$eventType])) {
         foreach ($this->enrichers[$eventType] as $enricher) {
             switch ($eventType) {
                 case 'phpdox.start':
                     $enricher->enrichStart($event);
                     break;
                 case 'class.start':
                     $enricher->enrichClass($event);
                     break;
                 case 'interface.start':
                     $enricher->enrichInterface($event);
                     break;
                 case 'trait.start':
                     $enricher->enrichTrait($event);
                     break;
                 case 'token.file.start':
                     $enricher->enrichTokenFile($event);
                     break;
                 case 'phpdox.end':
                     $enricher->enrichEnd($event);
                     break;
             }
         }
     }
     foreach ($this->handlerRegistry->getHandlersForEvent($event->getType()) as $callback) {
         call_user_func($callback, $event);
     }
     if ($progress) {
         $this->logger->progress('processed');
     }
 }
 /**
  * @param array             $changed
  * @param Project           $project
  * @param InheritanceConfig $config
  *
  * @throws ProjectException
  * @throws UnitObjectException
  */
 public function resolve(array $changed, Project $project, InheritanceConfig $config)
 {
     if (count($changed) == 0) {
         return;
     }
     $this->logger->reset();
     $this->logger->log("Resolving inheritance\n");
     $this->project = $project;
     $this->config = $config;
     $this->setupDependencies();
     foreach ($changed as $unit) {
         /** @var AbstractUnitObject $unit */
         if ($unit->hasExtends()) {
             foreach ($unit->getExtends() as $name) {
                 try {
                     $extendedUnit = $this->getUnitByName($name);
                     $this->processExtends($unit, $extendedUnit);
                 } catch (ProjectException $e) {
                     $this->addUnresolved($unit, $name);
                 }
             }
         }
         if ($unit->hasImplements()) {
             foreach ($unit->getImplements() as $implements) {
                 try {
                     $implementsUnit = $this->getUnitByName($implements);
                     $this->processImplements($unit, $implementsUnit);
                 } catch (ProjectException $e) {
                     $this->addUnresolved($unit, $implements);
                 }
             }
         }
         if ($unit->usesTraits()) {
             foreach ($unit->getUsedTraits() as $traitName) {
                 try {
                     $traitUnit = $this->getUnitByName($traitName);
                     $this->processTraitUse($unit, $unit->getTraitUse($traitName), $traitUnit);
                 } catch (ProjectException $e) {
                     $this->addUnresolved($unit, $traitName);
                 }
             }
         }
         $unitName = $unit->getName();
         if (isset($this->unresolved[$unitName])) {
             foreach ($this->unresolved[$unitName] as $missingUnit) {
                 $unit->markDependencyAsUnresolved($missingUnit);
             }
         }
         $this->logger->progress('processed');
     }
     $this->project->save();
     $this->logger->completed();
 }