Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. NameResolver.php

function NameResolver::enterNode

Overrides NodeVisitorAbstract::enterNode

File

vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php, line 55

Class

NameResolver

Namespace

PhpParser\NodeVisitor

Code

public function enterNode(Node $node) {
    if ($node instanceof Stmt\Namespace_) {
        $this->nameContext
            ->startNamespace($node->name);
    }
    elseif ($node instanceof Stmt\Use_) {
        foreach ($node->uses as $use) {
            $this->addAlias($use, $node->type, null);
        }
    }
    elseif ($node instanceof Stmt\GroupUse) {
        foreach ($node->uses as $use) {
            $this->addAlias($use, $node->type, $node->prefix);
        }
    }
    elseif ($node instanceof Stmt\Class_) {
        if (null !== $node->extends) {
            $node->extends = $this->resolveClassName($node->extends);
        }
        foreach ($node->implements as &$interface) {
            $interface = $this->resolveClassName($interface);
        }
        $this->resolveAttrGroups($node);
        if (null !== $node->name) {
            $this->addNamespacedName($node);
        }
        else {
            $node->namespacedName = null;
        }
    }
    elseif ($node instanceof Stmt\Interface_) {
        foreach ($node->extends as &$interface) {
            $interface = $this->resolveClassName($interface);
        }
        $this->resolveAttrGroups($node);
        $this->addNamespacedName($node);
    }
    elseif ($node instanceof Stmt\Enum_) {
        foreach ($node->implements as &$interface) {
            $interface = $this->resolveClassName($interface);
        }
        $this->resolveAttrGroups($node);
        $this->addNamespacedName($node);
    }
    elseif ($node instanceof Stmt\Trait_) {
        $this->resolveAttrGroups($node);
        $this->addNamespacedName($node);
    }
    elseif ($node instanceof Stmt\Function_) {
        $this->resolveSignature($node);
        $this->resolveAttrGroups($node);
        $this->addNamespacedName($node);
    }
    elseif ($node instanceof Stmt\ClassMethod || $node instanceof Expr\Closure || $node instanceof Expr\ArrowFunction) {
        $this->resolveSignature($node);
        $this->resolveAttrGroups($node);
    }
    elseif ($node instanceof Stmt\Property) {
        if (null !== $node->type) {
            $node->type = $this->resolveType($node->type);
        }
        $this->resolveAttrGroups($node);
    }
    elseif ($node instanceof Node\PropertyHook) {
        foreach ($node->params as $param) {
            $param->type = $this->resolveType($param->type);
            $this->resolveAttrGroups($param);
        }
        $this->resolveAttrGroups($node);
    }
    elseif ($node instanceof Stmt\Const_) {
        foreach ($node->consts as $const) {
            $this->addNamespacedName($const);
        }
    }
    elseif ($node instanceof Stmt\ClassConst) {
        if (null !== $node->type) {
            $node->type = $this->resolveType($node->type);
        }
        $this->resolveAttrGroups($node);
    }
    elseif ($node instanceof Stmt\EnumCase) {
        $this->resolveAttrGroups($node);
    }
    elseif ($node instanceof Expr\StaticCall || $node instanceof Expr\StaticPropertyFetch || $node instanceof Expr\ClassConstFetch || $node instanceof Expr\New_ || $node instanceof Expr\Instanceof_) {
        if ($node->class instanceof Name) {
            $node->class = $this->resolveClassName($node->class);
        }
    }
    elseif ($node instanceof Stmt\Catch_) {
        foreach ($node->types as &$type) {
            $type = $this->resolveClassName($type);
        }
    }
    elseif ($node instanceof Expr\FuncCall) {
        if ($node->name instanceof Name) {
            $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_FUNCTION);
        }
    }
    elseif ($node instanceof Expr\ConstFetch) {
        $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_CONSTANT);
    }
    elseif ($node instanceof Stmt\TraitUse) {
        foreach ($node->traits as &$trait) {
            $trait = $this->resolveClassName($trait);
        }
        foreach ($node->adaptations as $adaptation) {
            if (null !== $adaptation->trait) {
                $adaptation->trait = $this->resolveClassName($adaptation->trait);
            }
            if ($adaptation instanceof Stmt\TraitUseAdaptation\Precedence) {
                foreach ($adaptation->insteadof as &$insteadof) {
                    $insteadof = $this->resolveClassName($insteadof);
                }
            }
        }
    }
    return null;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal