73 lines
2.0 KiB
PHP
73 lines
2.0 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser;
|
|
|
|
interface NodeVisitor
|
|
{
|
|
/**
|
|
* Called once before traversal.
|
|
*
|
|
* Return value semantics:
|
|
* * null: $nodes stays as-is
|
|
* * otherwise: $nodes is set to the return value
|
|
*
|
|
* @param Node[] $nodes Array of nodes
|
|
*
|
|
* @return null|Node[] Array of nodes
|
|
*/
|
|
public function beforeTraverse(array $nodes);
|
|
|
|
/**
|
|
* Called when entering a node.
|
|
*
|
|
* Return value semantics:
|
|
* * null
|
|
* => $node stays as-is
|
|
* * NodeTraverser::DONT_TRAVERSE_CHILDREN
|
|
* => Children of $node are not traversed. $node stays as-is
|
|
* * NodeTraverser::STOP_TRAVERSAL
|
|
* => Traversal is aborted. $node stays as-is
|
|
* * otherwise
|
|
* => $node is set to the return value
|
|
*
|
|
* @param Node $node Node
|
|
*
|
|
* @return null|int|Node Replacement node (or special return value)
|
|
*/
|
|
public function enterNode(Node $node);
|
|
|
|
/**
|
|
* Called when leaving a node.
|
|
*
|
|
* Return value semantics:
|
|
* * null
|
|
* => $node stays as-is
|
|
* * NodeTraverser::REMOVE_NODE
|
|
* => $node is removed from the parent array
|
|
* * NodeTraverser::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
|
|
*
|
|
* @param Node $node Node
|
|
*
|
|
* @return null|int|Node|Node[] Replacement node (or special return value)
|
|
*/
|
|
public function leaveNode(Node $node);
|
|
|
|
/**
|
|
* Called once after traversal.
|
|
*
|
|
* Return value semantics:
|
|
* * null: $nodes stays as-is
|
|
* * otherwise: $nodes is set to the return value
|
|
*
|
|
* @param Node[] $nodes Array of nodes
|
|
*
|
|
* @return null|Node[] Array of nodes
|
|
*/
|
|
public function afterTraverse(array $nodes);
|
|
}
|