: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* This file is part of Twig.
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
namespace WPML\Core\Twig;
use WPML\Core\Twig\NodeVisitor\NodeVisitorInterface;
* It visits all nodes and their children and calls the given visitor for each.
* @author Fabien Potencier <fabien@symfony.com>
protected $visitors = [];
* @param NodeVisitorInterface[] $visitors
public function __construct(\WPML\Core\Twig\Environment $env, array $visitors = [])
foreach ($visitors as $visitor) {
$this->addVisitor($visitor);
public function addVisitor(\WPML\Core\Twig\NodeVisitor\NodeVisitorInterface $visitor)
$this->visitors[$visitor->getPriority()][] = $visitor;
* Traverses a node and calls the registered visitors.
* @return \Twig_NodeInterface
public function traverse(\WPML\Core\Twig_NodeInterface $node)
foreach ($this->visitors as $visitors) {
foreach ($visitors as $visitor) {
$node = $this->traverseForVisitor($visitor, $node);
protected function traverseForVisitor(\WPML\Core\Twig\NodeVisitor\NodeVisitorInterface $visitor, \WPML\Core\Twig_NodeInterface $node = null)
$node = $visitor->enterNode($node, $this->env);
foreach ($node as $k => $n) {
if (\false !== ($m = $this->traverseForVisitor($visitor, $n)) && null !== $m) {
return $visitor->leaveNode($node, $this->env);
\class_alias('WPML\\Core\\Twig\\NodeTraverser', 'WPML\\Core\\Twig_NodeTraverser');