for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* Spiral Framework.
*
* @license MIT
* @author Valentin V (Vvval)
*/
declare(strict_types=1);
namespace Cycle\ORM\Promise;
use PhpParser\Node;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitor;
final class Traverser
{
* @param Node[] $nodes
* @param NodeVisitor ...$visitors
* @return Node[]
public function traverseClonedNodes(array $nodes, NodeVisitor ...$visitors): array
return $this->makeTraverser(...$visitors)->traverse($this->cloneNodes($nodes));
}
* @param array $nodes
public function traverse(array $nodes, NodeVisitor ...$visitors): void
$this->makeTraverser(...$visitors)->traverse($nodes);
private function cloneNodes(array $nodes): array
return $this->makeTraverser(new NodeVisitor\CloningVisitor())->traverse($nodes);
* @return NodeTraverser
private function makeTraverser(NodeVisitor ...$visitors): NodeTraverser
$traverser = new NodeTraverser();
foreach ($visitors as $visitor) {
$traverser->addVisitor($visitor);
return $traverser;