Methods |
public
|
beforeTraverse(Node[] $nodes): null|Node[]
Called once before traversal. Return value semantics:
- null: $nodes stays as-is
- otherwise: $nodes is set to the return value
Called once before traversal. Return value semantics:
- null: $nodes stays as-is
- otherwise: $nodes is set to the return value
Parameters
Returns
Implemented by
|
#
|
public
|
enterNode(Node $node): null|int|Node|Node[]
Called when entering a node. Return value semantics:
- null
=> $node stays as-is
- array (of Nodes)
=> The return value is merged into the parent array (at the position of the $node)
- NodeVisitor::REMOVE_NODE
=> $node is removed from the parent array
- NodeVisitor::REPLACE_WITH_NULL
=> $node is replaced with null
- NodeVisitor::DONT_TRAVERSE_CHILDREN
=> Children of $node are not traversed. $node stays as-is
- NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN
=> Further visitors for the current node are skipped, and its children are not
traversed. $node stays as-is.
- NodeVisitor::STOP_TRAVERSAL
=> Traversal is aborted. $node stays as-is
- otherwise
=> $node is set to the return value
Called when entering a node. Return value semantics:
- null
=> $node stays as-is
- array (of Nodes)
=> The return value is merged into the parent array (at the position of the $node)
- NodeVisitor::REMOVE_NODE
=> $node is removed from the parent array
- NodeVisitor::REPLACE_WITH_NULL
=> $node is replaced with null
- NodeVisitor::DONT_TRAVERSE_CHILDREN
=> Children of $node are not traversed. $node stays as-is
- NodeVisitor::DONT_TRAVERSE_CURRENT_AND_CHILDREN
=> Further visitors for the current node are skipped, and its children are not
traversed. $node stays as-is.
- NodeVisitor::STOP_TRAVERSAL
=> Traversal is aborted. $node stays as-is
- otherwise
=> $node is set to the return value
Parameters
Returns
Replacement node (or special return value)
Implemented by
|
#
|
public
|
leaveNode(Node $node): null|int|Node|Node[]
Called when leaving a node. Return value semantics:
- null
=> $node stays as-is
- NodeVisitor::REMOVE_NODE
=> $node is removed from the parent array
- NodeVisitor::REPLACE_WITH_NULL
=> $node is replaced with null
- NodeVisitor::STOP_TRAVERSAL
=> Traversal is aborted. $node stays as-is
- array (of Nodes)
=> The return value is merged into the parent array (at the position of the $node)
- otherwise
=> $node is set to the return value
Called when leaving a node. Return value semantics:
- null
=> $node stays as-is
- NodeVisitor::REMOVE_NODE
=> $node is removed from the parent array
- NodeVisitor::REPLACE_WITH_NULL
=> $node is replaced with null
- NodeVisitor::STOP_TRAVERSAL
=> Traversal is aborted. $node stays as-is
- array (of Nodes)
=> The return value is merged into the parent array (at the position of the $node)
- otherwise
=> $node is set to the return value
Parameters
Returns
Replacement node (or special return value)
Implemented by
|
#
|
public
|
afterTraverse(Node[] $nodes): null|Node[]
Called once after traversal. Return value semantics:
- null: $nodes stays as-is
- otherwise: $nodes is set to the return value
Called once after traversal. Return value semantics:
- null: $nodes stays as-is
- otherwise: $nodes is set to the return value
Parameters
Returns
Implemented by
|
#
|
Constants |
public
|
|
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.
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
|
|
STOP_TRAVERSAL = 2
If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns
STOP_TRAVERSAL, traversal is aborted. The afterTraverse() method will still be invoked.
If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns
STOP_TRAVERSAL, traversal is aborted. The afterTraverse() method will still be invoked.
|
#
|
public
|
|
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.
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
|
|
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.
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
|
|
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.
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.
|
#
|