public PhpParser\NodeVisitor::DONT_TRAVERSE_CHILDREN = 1

If NodeVisitor::enterNode() returns DONT_TRAVERSE_CHILDREN, child nodes of the current node will not be traversed for any visitors.

For subsequent visitors enterNode() will still be called on the current node and leaveNode() will also be invoked for the current node.

public PhpParser\NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN = 4

If NodeVisitor::enterNode() returns DONT_TRAVERSE_CURRENT_AND_CHILDREN, child nodes of the current node will not be traversed for any visitors.

For subsequent visitors enterNode() will not be called as well. leaveNode() will be invoked for visitors that has enterNode() method invoked.

public PhpParser\NodeVisitor::REMOVE_NODE = 3

If NodeVisitor::leaveNode() returns REMOVE_NODE for a node that occurs in an array, it will be removed from the array.

For subsequent visitors leaveNode() will still be invoked for the removed node.

public PhpParser\NodeVisitor::REPLACE_WITH_NULL = 5

If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns REPLACE_WITH_NULL, the node will be replaced with null. This is not a legal return value if the node is part of an array, rather than another node.

public PhpParser\NodeVisitor::STOP_TRAVERSAL = 2

If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns STOP_TRAVERSAL, traversal is aborted.

The afterTraverse() method will still be invoked.

public __construct(?PhpParser\ErrorHandler $errorHandler = NULL, array $options = [])

Constructs a name resolution visitor.


  • preserveOriginalNames (default false): An "originalName" attribute will be added to all name nodes that underwent resolution.
  • replaceNodes (default true): Resolved names are replaced in-place. Otherwise, a resolvedName attribute is added. (Names that cannot be statically resolved receive a namespacedName attribute, as usual.)
  • param \ErrorHandler|null $errorHandler Error handler
  • param array{preserveOriginalNames?: bool, replaceNodes?: bool} $options Options
public PhpParser\NodeVisitorAbstract::afterTraverse(array $nodes)
public beforeTraverse(array $nodes) : ?array
public enterNode(PhpParser\Node $node)
public getNameContext() : PhpParser\NameContext

Get name resolution context.

public PhpParser\NodeVisitorAbstract::leaveNode(PhpParser\Node $node)
protected PhpParser\NameContext $nameContext
  • var \NameContext Naming context
protected bool $preserveOriginalNames
  • var bool Whether to preserve original names
protected bool $replaceNodes
  • var bool Whether to replace resolved nodes in place, or to add resolvedNode attributes
protected addNamespacedName(PhpParser\Node $node) : void
protected resolveAttrGroups(PhpParser\Node $node) : void
protected resolveClassName(PhpParser\Node\Name $name) : PhpParser\Node\Name
protected resolveName(PhpParser\Node\Name $name, int $type) : PhpParser\Node\Name

Resolve name, according to name resolver options.

  • param \Name $name Function or constant name to resolve
  • param \Stmt\Use_::TYPE_* $type One of Stmt\Use_::TYPE_*
  • return \Name Resolved name, or original name with attribute
private addAlias(PhpParser\Node\UseItem $use, int $type, ?PhpParser\Node\Name $prefix = NULL) : void
  • param \Stmt\Use_::TYPE_* $type
private resolveSignature( $node) : void
  • param \Stmt\Function_|\Stmt\ClassMethod|\Expr\Closure|\Expr\ArrowFunction $node
private resolveType(?PhpParser\Node $node) : ?PhpParser\Node
  • template T of Node\Identifier|Name|Node\ComplexType|null
  • param \T $node
  • return \T
© 2024 Bruce Wells
Search Namespaces \ Classes