Exemplo n.º 1
0
 /**
  * Processes a function/method and adds classes from annotations to the overall class array.
  *
  * @param array                                                               $declared   Array of declared classes
  * @param array                                                               $allClasses Array with all classes parsed so far
  * @param \ApiGen\ReflectionFunction|\TokenReflection\IReflectionFunctionBase $function   Function/method reflection
  *
  * @return array
  */
 private function processFunction(array $declared, array $allClasses, $function)
 {
     static $parsedAnnotations = array('param', 'return', 'throws');
     $annotations = $function->getAnnotations();
     foreach ($parsedAnnotations as $annotation) {
         if (!isset($annotations[$annotation])) {
             continue;
         }
         foreach ($annotations[$annotation] as $doc) {
             foreach (explode('|', preg_replace('~\\s.*~', '', $doc)) as $name) {
                 if ($name) {
                     $name = Resolver::resolveClassFQN(rtrim($name, '[]'), $function->getNamespaceAliases(), $function->getNamespaceName());
                     $allClasses = $this->addClass($declared, $allClasses, $name);
                 }
             }
         }
     }
     foreach ($function->getParameters() as $param) {
         if ($hint = $param->getClassName()) {
             $allClasses = $this->addClass($declared, $allClasses, $hint);
         }
     }
     return $allClasses;
 }