2017-08-18 22:57:27 +02:00
|
|
|
<?php declare(strict_types=1);
|
2011-08-09 09:27:47 +02:00
|
|
|
|
2014-02-06 14:44:16 +01:00
|
|
|
namespace PhpParser;
|
|
|
|
|
|
|
|
interface NodeVisitor
|
2011-08-09 09:27:47 +02:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Called once before traversal.
|
|
|
|
*
|
2011-09-24 23:37:47 +02:00
|
|
|
* Return value semantics:
|
|
|
|
* * null: $nodes stays as-is
|
|
|
|
* * otherwise: $nodes is set to the return value
|
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @param Node[] $nodes Array of nodes
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @return null|Node[] Array of nodes
|
2011-08-09 09:27:47 +02:00
|
|
|
*/
|
2011-09-24 23:37:47 +02:00
|
|
|
public function beforeTraverse(array $nodes);
|
2011-08-09 09:27:47 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when entering a node.
|
|
|
|
*
|
2011-09-24 23:37:47 +02:00
|
|
|
* Return value semantics:
|
2017-01-25 23:28:44 +01:00
|
|
|
* * null
|
|
|
|
* => $node stays as-is
|
|
|
|
* * NodeTraverser::DONT_TRAVERSE_CHILDREN
|
|
|
|
* => Children of $node are not traversed. $node stays as-is
|
2017-01-29 22:33:42 +01:00
|
|
|
* * NodeTraverser::STOP_TRAVERSAL
|
|
|
|
* => Traversal is aborted. $node stays as-is
|
2017-01-25 23:28:44 +01:00
|
|
|
* * otherwise
|
|
|
|
* => $node is set to the return value
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @param Node $node Node
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2017-01-29 22:36:33 +01:00
|
|
|
* @return null|int|Node Replacement node (or special return value)
|
2011-08-09 09:27:47 +02:00
|
|
|
*/
|
2014-02-06 14:44:16 +01:00
|
|
|
public function enterNode(Node $node);
|
2011-08-09 09:27:47 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when leaving a node.
|
|
|
|
*
|
2011-09-24 23:37:47 +02:00
|
|
|
* Return value semantics:
|
2017-01-25 23:28:44 +01:00
|
|
|
* * null
|
|
|
|
* => $node stays as-is
|
|
|
|
* * NodeTraverser::REMOVE_NODE
|
|
|
|
* => $node is removed from the parent array
|
2017-01-29 22:33:42 +01:00
|
|
|
* * NodeTraverser::STOP_TRAVERSAL
|
|
|
|
* => Traversal is aborted. $node stays as-is
|
2017-01-25 23:28:44 +01:00
|
|
|
* * 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
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @param Node $node Node
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2017-02-03 22:34:27 +01:00
|
|
|
* @return null|int|Node|Node[] Replacement node (or special return value)
|
2011-08-09 09:27:47 +02:00
|
|
|
*/
|
2014-02-06 14:44:16 +01:00
|
|
|
public function leaveNode(Node $node);
|
2011-08-09 09:27:47 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called once after traversal.
|
|
|
|
*
|
2011-09-24 23:37:47 +02:00
|
|
|
* Return value semantics:
|
|
|
|
* * null: $nodes stays as-is
|
|
|
|
* * otherwise: $nodes is set to the return value
|
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @param Node[] $nodes Array of nodes
|
2011-09-24 23:37:47 +02:00
|
|
|
*
|
2014-02-06 14:44:16 +01:00
|
|
|
* @return null|Node[] Array of nodes
|
2011-08-09 09:27:47 +02:00
|
|
|
*/
|
2011-09-24 23:37:47 +02:00
|
|
|
public function afterTraverse(array $nodes);
|
2011-08-09 09:27:47 +02:00
|
|
|
}
|