Example #1
0
 /**
  * @param DocInfo $docInfo
  * @param ReflectionMethod $method
  * @param FunctionEntity $func
  * @param array $useStatements
  * @return string
  */
 private function getReturnType(DocInfo $docInfo, ReflectionMethod $method, FunctionEntity $func, array $useStatements)
 {
     $returnType = $docInfo->getReturnType();
     if (empty($returnType)) {
         $returnType = $this->guessReturnTypeFromFuncName($func->getName());
     } elseif (Utils::isClassReference($returnType) && !self::classExists($returnType)) {
         $isReferenceToArrayOfObjects = substr($returnType, -2) == '[]' ? '[]' : '';
         if ($isReferenceToArrayOfObjects) {
             $returnType = substr($returnType, 0, strlen($returnType) - 2);
         }
         $className = $this->stripAwayNamespace($returnType);
         foreach ($useStatements as $usedClass) {
             if ($this->stripAwayNamespace($usedClass) == $className) {
                 $returnType = $usedClass;
                 break;
             }
         }
         if ($isReferenceToArrayOfObjects) {
             $returnType .= '[]';
         }
     }
     return Utils::sanitizeDeclaration($returnType, $method->getDeclaringClass()->getNamespaceName());
 }