src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php
private function parseDeclaration(Tokens $tokens, $startIndex, $endIndex)
    {
        $fullName = $shortName = '';
        $aliased = false;

        $type = NamespaceUseAnalysis::TYPE_CLASS;
        for ($i = $startIndex; $i <= $endIndex; ++$i) {
            $token = $tokens[$i];
            if ($token->equals(',') || $token->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) {
                // do not touch group use declarations until the logic of this is added (for example: `use some\a\{ClassD};`)
                // ignore multiple use statements that should be split into few separate statements (for example: `use BarB, BarC as C;`)
                return null;
            }

            if ($token->isGivenKind(CT::T_FUNCTION_IMPORT)) {
                $type = NamespaceUseAnalysis::TYPE_FUNCTION;
            } elseif ($token->isGivenKind(CT::T_CONST_IMPORT)) {
                $type = NamespaceUseAnalysis::TYPE_CONSTANT;
            }

            if ($token->isWhitespace() || $token->isComment() || $token->isGivenKind(T_USE)) {
                continue;
            }

            if ($token->isGivenKind(T_STRING)) {
                $shortName = $token->getContent();
                if (!$aliased) {
                    $fullName .= $shortName;
                }
            } elseif ($token->isGivenKind(T_NS_SEPARATOR)) {
                $fullName .= $token->getContent();
            } elseif ($token->isGivenKind(T_AS)) {
                $aliased = true;
            }
        }

        return new NamespaceUseAnalysis(
            trim($fullName),
            $shortName,
            $aliased,
            $startIndex,
            $endIndex,
            $type
        );
    }
private function parseDeclaration(Tokens $tokens, $startIndex, $endIndex)
    {
        $fullName = $shortName = '';
        $aliased = false;

        $type = NamespaceUseAnalysis::TYPE_CLASS;
        for ($i = $startIndex; $i <= $endIndex; ++$i) {
            $token = $tokens[$i];
            if ($token->equals(',') || $token->isGivenKind(CT::T_GROUP_IMPORT_BRACE_CLOSE)) {
                // do not touch group use declarations until the logic of this is added (for example: `use some\a\{ClassD};`)
                // ignore multiple use statements that should be split into few separate statements (for example: `use BarB, BarC as C;`)
                return null;
            }

            if ($token->isGivenKind(CT::T_FUNCTION_IMPORT)) {
                $type = NamespaceUseAnalysis::TYPE_FUNCTION;
            } elseif ($token->isGivenKind(CT::T_CONST_IMPORT)) {
                $type = NamespaceUseAnalysis::TYPE_CONSTANT;
            }

            if ($token->isWhitespace() || $token->isComment() || $token->isGivenKind(T_USE)) {
                continue;
            }

            if ($token->isGivenKind(T_STRING)) {
                $shortName = $token->getContent();
                if (!$aliased) {
                    $fullName .= $shortName;
                }
            } elseif ($token->isGivenKind(T_NS_SEPARATOR)) {
                $fullName .= $token->getContent();
            } elseif ($token->isGivenKind(T_AS)) {
                $aliased = true;
            }
        }

        return new NamespaceUseAnalysis(
            trim($fullName),
            $shortName,
            $aliased,
            $startIndex,
            $endIndex,
            $type
        );
    }
private function parseDeclaration ( Tokens $ tokens , $ startIndex , $ endIndex ) { $ fullName = $ shortName = '' ; $ aliased = false ; $ type = NamespaceUseAnalysis :: TYPE_CLASS ; for ( $ i = $ startIndex ; $ i <= $ endIndex ; ++ $ i ) { $ token = $ tokens [ $ i ] ; if ( $ token -> equals ( ',' ) || $ token -> isGivenKind ( CT :: T_GROUP_IMPORT_BRACE_CLOSE ) ) { // do not touch group use declarations until the logic of this is added (for example: `use some\a\{ClassD};`) // ignore multiple use statements that should be split into few separate statements (for example: `use BarB, BarC as C;`) return null ; } if ( $ token -> isGivenKind ( CT :: T_FUNCTION_IMPORT ) ) { $ type = NamespaceUseAnalysis :: TYPE_FUNCTION ; } elseif ( $ token -> isGivenKind ( CT :: T_CONST_IMPORT ) ) { $ type = NamespaceUseAnalysis :: TYPE_CONSTANT ; } if ( $ token -> isWhitespace ( ) || $ token -> isComment ( ) || $ token -> isGivenKind ( T_USE ) ) { continue ; } if ( $ token -> isGivenKind ( T_STRING ) ) { $ shortName = $ token -> getContent ( ) ; if ( ! $ aliased ) { $ fullName .= $ shortName ; } } elseif ( $ token -> isGivenKind ( T_NS_SEPARATOR ) ) { $ fullName .= $ token -> getContent ( ) ; } elseif ( $ token -> isGivenKind ( T_AS ) ) { $ aliased = true ; } } return new NamespaceUseAnalysis ( trim ( $ fullName ) , $ shortName , $ aliased , $ startIndex , $ endIndex , $ type ) ; }
@param Tokens $tokens
@param int    $startIndex
@param int    $endIndex

@return null|NamespaceUseAnalysis
@param Tokens $tokens @param int $startIndex @param int $endIndex