Beispiel #1
0
 private function implementExist(ClassMetadata $metadata, ClassCollector $classCollector, $implements)
 {
     // Class is in actual namespace
     if (array_key_exists($metadata->getNamespace() . '\\' . $implements, $classCollector->getCollected())) {
         return true;
     }
     foreach ($metadata->getClasses() as $use) {
         if (substr(strrchr($use, "\\"), 1) === $implements) {
             return true;
         }
     }
     throw new \Exception(sprintf('interface %s does not exist', $implements));
 }
Beispiel #2
0
 /**
  * @param string   $actualNamespace
  * @param array    $definition
  * @param array    $use
  * @param array    $classes
  * @param DocBlock $phpdoc
  *
  * @return array
  */
 private function findReturnTag($phpdoc = null, array $definition, ClassMetadata $classMetadata, ClassMethod $node)
 {
     $implements = $classMetadata->getImplements();
     if (is_array($implements) === true) {
         foreach ($implements as $implement) {
             foreach ($this->classCollector->getCollected() as $className => $classInfo) {
                 if ($classMetadata->getNamespace() . '\\' . $implement === $className) {
                     try {
                         $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                     } catch (\InvalidArgumentException $e) {
                     }
                 }
                 foreach ($classMetadata->getClasses() as $use) {
                     if ($use . '/' . $implement === $className) {
                         try {
                             $phpdoc = $this->nodeToDocBlock($this->findMethod($classInfo, $node->name));
                         } catch (\InvalidArgumentException $e) {
                         }
                     }
                 }
             }
         }
     }
     if ($phpdoc !== null) {
         foreach ($phpdoc->getTags() as $tag) {
             if ($this->isReturnTag($tag) === true) {
                 $definition['return'] = array('type' => $this->findType($tag));
                 break;
             }
         }
     }
     return $definition;
 }