mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 03:35:01 +01:00
StandaloneTraverseNodeTraverser: create NodeTraversers just once
This commit is contained in:
parent
ed5baf3d6e
commit
684b1b933d
@ -3,6 +3,8 @@
|
|||||||
namespace Rector\NodeTraverser;
|
namespace Rector\NodeTraverser;
|
||||||
|
|
||||||
use PhpParser\Node;
|
use PhpParser\Node;
|
||||||
|
use PhpParser\NodeTraverser;
|
||||||
|
use PhpParser\NodeTraverserInterface;
|
||||||
use PhpParser\NodeVisitor;
|
use PhpParser\NodeVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,6 +23,11 @@ final class StandaloneTraverseNodeTraverser
|
|||||||
*/
|
*/
|
||||||
private $nodeTraverserFactory;
|
private $nodeTraverserFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var NodeTraverserInterface[]
|
||||||
|
*/
|
||||||
|
private $nodeTraversers;
|
||||||
|
|
||||||
public function __construct(NodeTraverserFactory $nodeTraverserFactory)
|
public function __construct(NodeTraverserFactory $nodeTraverserFactory)
|
||||||
{
|
{
|
||||||
$this->nodeTraverserFactory = $nodeTraverserFactory;
|
$this->nodeTraverserFactory = $nodeTraverserFactory;
|
||||||
@ -37,11 +44,26 @@ final class StandaloneTraverseNodeTraverser
|
|||||||
*/
|
*/
|
||||||
public function traverse(array $nodes): array
|
public function traverse(array $nodes): array
|
||||||
{
|
{
|
||||||
foreach ($this->nodeVisitors as $nodeVisitor) {
|
foreach ($this->getNodeTraversers() as $nodeTraverser) {
|
||||||
$nodeTraverser = $this->nodeTraverserFactory->createWithNodeVisitor($nodeVisitor);
|
|
||||||
$nodes = $nodeTraverser->traverse($nodes);
|
$nodes = $nodeTraverser->traverse($nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $nodes;
|
return $nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return NodeTraverserInterface[]
|
||||||
|
*/
|
||||||
|
private function getNodeTraversers(): array
|
||||||
|
{
|
||||||
|
if ($this->nodeTraversers) {
|
||||||
|
return $this->nodeTraversers;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->nodeVisitors as $nodeVisitor) {
|
||||||
|
$this->nodeTraversers[] = $this->nodeTraverserFactory->createWithNodeVisitor($nodeVisitor);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->nodeTraversers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user