mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-13 10:56:38 +00:00
minor #2668 Small optimization for Twig_NodeTraverser::traverseForVisitor (covex-nn)
This PR was merged into the 1.x branch.
Discussion
----------
Small optimization for Twig_NodeTraverser::traverseForVisitor
During traversing a node tree `Twig_NodeTraverser::traverseForVisitor` (`Twig_NodeVisitorInterface::leaveNode`) often returns a same child node (a same object). So, there is no need to set it back to its parent.
This PR adds a check if a child node was changed. With this check a lot of calls to `Twig_Node::setNode` will be skipped.
Closes #2665
Commits
-------
555d01f3 Small optimization for Twig_NodeTraverser::traverseForVisitor
This commit is contained in:
@@ -70,8 +70,10 @@ class Twig_NodeTraverser
|
||||
$node = $visitor->enterNode($node, $this->env);
|
||||
|
||||
foreach ($node as $k => $n) {
|
||||
if (false !== $n = $this->traverseForVisitor($visitor, $n)) {
|
||||
$node->setNode($k, $n);
|
||||
if (false !== $m = $this->traverseForVisitor($visitor, $n)) {
|
||||
if ($m !== $n) {
|
||||
$node->setNode($k, $m);
|
||||
}
|
||||
} else {
|
||||
$node->removeNode($k);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user