/** * @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()); }