src/Tokenizer/Analyzer/FunctionsAnalyzer.php
public function getFunctionReturnType(Tokens $tokens, $methodIndex)
    {
        $argumentsStart = $tokens->getNextTokenOfKind($methodIndex, ['(']);
        $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $argumentsStart);
        $typeColonIndex = $tokens->getNextMeaningfulToken($argumentsEnd);
        if (':' !== $tokens[$typeColonIndex]->getContent()) {
            return null;
        }

        $type = '';
        $typeStartIndex = $tokens->getNextNonWhitespace($typeColonIndex);
        $typeEndIndex = $typeStartIndex;
        $functionBodyStart = $tokens->getNextTokenOfKind($typeColonIndex, ['{', ';']);
        for ($i = $typeStartIndex; $i < $functionBodyStart; ++$i) {
            if ($tokens[$i]->isWhitespace()) {
                continue;
            }

            $type .= $tokens[$i]->getContent();
            $typeEndIndex = $i;
        }

        return new TypeAnalysis($type, $typeStartIndex, $typeEndIndex);
    }
public function getFunctionReturnType(Tokens $tokens, $methodIndex)
    {
        $argumentsStart = $tokens->getNextTokenOfKind($methodIndex, ['(']);
        $argumentsEnd = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $argumentsStart);
        $typeColonIndex = $tokens->getNextMeaningfulToken($argumentsEnd);
        if (':' !== $tokens[$typeColonIndex]->getContent()) {
            return null;
        }

        $type = '';
        $typeStartIndex = $tokens->getNextNonWhitespace($typeColonIndex);
        $typeEndIndex = $typeStartIndex;
        $functionBodyStart = $tokens->getNextTokenOfKind($typeColonIndex, ['{', ';']);
        for ($i = $typeStartIndex; $i < $functionBodyStart; ++$i) {
            if ($tokens[$i]->isWhitespace()) {
                continue;
            }

            $type .= $tokens[$i]->getContent();
            $typeEndIndex = $i;
        }

        return new TypeAnalysis($type, $typeStartIndex, $typeEndIndex);
    }
public function getFunctionReturnType ( Tokens $ tokens , $ methodIndex ) { $ argumentsStart = $ tokens -> getNextTokenOfKind ( $ methodIndex , [ '(' ] ) ; $ argumentsEnd = $ tokens -> findBlockEnd ( Tokens :: BLOCK_TYPE_PARENTHESIS_BRACE , $ argumentsStart ) ; $ typeColonIndex = $ tokens -> getNextMeaningfulToken ( $ argumentsEnd ) ; if ( ':' !== $ tokens [ $ typeColonIndex ] -> getContent ( ) ) { return null ; } $ type = '' ; $ typeStartIndex = $ tokens -> getNextNonWhitespace ( $ typeColonIndex ) ; $ typeEndIndex = $ typeStartIndex ; $ functionBodyStart = $ tokens -> getNextTokenOfKind ( $ typeColonIndex , [ '{' , ';' ] ) ; for ( $ i = $ typeStartIndex ; $ i < $ functionBodyStart ; ++ $ i ) { if ( $ tokens [ $ i ] -> isWhitespace ( ) ) { continue ; } $ type .= $ tokens [ $ i ] -> getContent ( ) ; $ typeEndIndex = $ i ; } return new TypeAnalysis ( $ type , $ typeStartIndex , $ typeEndIndex ) ; }
@param Tokens $tokens
@param int    $methodIndex

@return null|TypeAnalysis
@param Tokens $tokens @param int $methodIndex