public function resolve(Tokens $tokens, $typeName)
    {
        // First match explicit imports:
        $useMap = $this->getUseMapFromTokens($tokens);
        foreach ($useMap as $shortName => $fullName) {
            $regex = '/^\\\\?'.preg_quote($fullName, '/').'$/';
            if (Preg::match($regex, $typeName)) {
                return $shortName;
            }
        }

        // Next try to match (partial) classes inside the same namespace
        // For now only support one namespace per file:
        $namespaces = $this->getNamespacesFromTokens($tokens);
        if (1 === \count($namespaces)) {
            foreach ($namespaces as $fullName) {
                $matches = [];
                $regex = '/^\\\\?'.preg_quote($fullName, '/').'\\\\(?P<className>.+)$/';
                if (Preg::match($regex, $typeName, $matches)) {
                    return $matches['className'];
                }
            }
        }

        // Next: Try to match partial use statements:

        foreach ($useMap as $shortName => $fullName) {
            $matches = [];
            $regex = '/^\\\\?'.preg_quote($fullName, '/').'\\\\(?P<className>.+)$/';
            if (Preg::match($regex, $typeName, $matches)) {
                return $shortName.'\\'.$matches['className'];
            }
        }

        return $typeName;
    }
public function resolve(Tokens $tokens, $typeName)
    {
        
        $useMap = $this->getUseMapFromTokens($tokens);
        foreach ($useMap as $shortName => $fullName) {
            $regex = '/^\\\\?'.preg_quote($fullName, '/').'$/';
            if (Preg::match($regex, $typeName)) {
                return $shortName;
            }
        }

        
        
        $namespaces = $this->getNamespacesFromTokens($tokens);
        if (1 === \count($namespaces)) {
            foreach ($namespaces as $fullName) {
                $matches = [];
                $regex = '/^\\\\?'.preg_quote($fullName, '/').'\\\\(?P<className>.+)$/';
                if (Preg::match($regex, $typeName, $matches)) {
                    return $matches['className'];
                }
            }
        }

        

        foreach ($useMap as $shortName => $fullName) {
            $matches = [];
            $regex = '/^\\\\?'.preg_quote($fullName, '/').'\\\\(?P<className>.+)$/';
            if (Preg::match($regex, $typeName, $matches)) {
                return $shortName.'\\'.$matches['className'];
            }
        }

        return $typeName;
    }
public function resolve ( Tokens $ tokens , $ typeName ) { // First match explicit imports: $ useMap = $ this -> getUseMapFromTokens ( $ tokens ) ; foreach ( $ useMap as $ shortName => $ fullName ) { $ regex = '/^\\\\?' . preg_quote ( $ fullName , '/' ) . '$/' ; if ( Preg :: match ( $ regex , $ typeName ) ) { return $ shortName ; } } // Next try to match (partial) classes inside the same namespace // For now only support one namespace per file: $ namespaces = $ this -> getNamespacesFromTokens ( $ tokens ) ; if ( 1 === \ count ( $ namespaces ) ) { foreach ( $ namespaces as $ fullName ) { $ matches = [ ] ; $ regex = '/^\\\\?' . preg_quote ( $ fullName , '/' ) . '\\\\(?P<className>.+)$/' ; if ( Preg :: match ( $ regex , $ typeName , $ matches ) ) { return $ matches [ 'className' ] ; } } } // Next: Try to match partial use statements: foreach ( $ useMap as $ shortName => $ fullName ) { $ matches = [ ] ; $ regex = '/^\\\\?' . preg_quote ( $ fullName , '/' ) . '\\\\(?P<className>.+)$/' ; if ( Preg :: match ( $ regex , $ typeName , $ matches ) ) { return $ shortName . '\\' . $ matches [ 'className' ] ; } } return $ typeName ; }
This method will resolve the shortName of a FQCN if possible or otherwise return the inserted type name.
E.g.: use Foo\Bar => "Bar".

@param Tokens $tokens
@param string $typeName

@return string
This method will resolve the shortName of a FQCN if possible or otherwise return the inserted type name . E . g . : use Foo \ Bar = > Bar .