PhpParser\NodeTraverser::traverseNode PHP Method

traverseNode() protected method

protected traverseNode ( phpparser\Node $node )
$node phpparser\Node
    protected function traverseNode(Node $node)
    {
        foreach ($node->getSubNodeNames() as $name) {
            $subNode =& $node->{$name};
            if (is_array($subNode)) {
                $subNode = $this->traverseArray($subNode);
            } elseif ($subNode instanceof Node) {
                $traverseChildren = true;
                foreach ($this->visitors as $visitor) {
                    $return = $visitor->enterNode($subNode);
                    if (self::DONT_TRAVERSE_CHILDREN === $return) {
                        $traverseChildren = false;
                    } else {
                        if (null !== $return) {
                            $subNode = $return;
                        }
                    }
                }
                if ($traverseChildren) {
                    $subNode = $this->traverseNode($subNode);
                }
                foreach ($this->visitors as $visitor) {
                    if (null !== ($return = $visitor->leaveNode($subNode))) {
                        if (is_array($return)) {
                            throw new \LogicException('leaveNode() may only return an array ' . 'if the parent structure is an array');
                        }
                        $subNode = $return;
                    }
                }
            }
        }
        return $node;
    }