Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ProfilerNodeVisitor.php

class ProfilerNodeVisitor

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

  • class \Twig\Profiler\NodeVisitor\ProfilerNodeVisitor implements \Twig\NodeVisitor\NodeVisitorInterface

Expanded class hierarchy of ProfilerNodeVisitor

1 file declares its use of ProfilerNodeVisitor
ProfilerExtension.php in vendor/twig/twig/src/Extension/ProfilerExtension.php

File

vendor/twig/twig/src/Profiler/NodeVisitor/ProfilerNodeVisitor.php, line 29

Namespace

Twig\Profiler\NodeVisitor
View source
final class ProfilerNodeVisitor implements NodeVisitorInterface {
    private $varName;
    public function __construct(string $extensionName) {
        $this->varName = \sprintf('__internal_%s', hash(\PHP_VERSION_ID < 80100 ? 'sha256' : 'xxh128', $extensionName));
    }
    public function enterNode(Node $node, Environment $env) : Node {
        return $node;
    }
    public function leaveNode(Node $node, Environment $env) : ?Node {
        if ($node instanceof ModuleNode) {
            $node->setNode('display_start', new Nodes([
                new EnterProfileNode($this->extensionName, Profile::TEMPLATE, $node->getTemplateName(), $this->varName),
                $node->getNode('display_start'),
            ]));
            $node->setNode('display_end', new Nodes([
                new LeaveProfileNode($this->varName),
                $node->getNode('display_end'),
            ]));
        }
        elseif ($node instanceof BlockNode) {
            $node->setNode('body', new BodyNode([
                new EnterProfileNode($this->extensionName, Profile::BLOCK, $node->getAttribute('name'), $this->varName),
                $node->getNode('body'),
                new LeaveProfileNode($this->varName),
            ]));
        }
        elseif ($node instanceof MacroNode) {
            $node->setNode('body', new BodyNode([
                new EnterProfileNode($this->extensionName, Profile::MACRO, $node->getAttribute('name'), $this->varName),
                $node->getNode('body'),
                new LeaveProfileNode($this->varName),
            ]));
        }
        return $node;
    }
    public function getPriority() : int {
        return 0;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ProfilerNodeVisitor::$varName private property
ProfilerNodeVisitor::enterNode public function Called before child nodes are visited. Overrides NodeVisitorInterface::enterNode
ProfilerNodeVisitor::getPriority public function Returns the priority for this visitor. Overrides NodeVisitorInterface::getPriority
ProfilerNodeVisitor::leaveNode public function Called after child nodes are visited. Overrides NodeVisitorInterface::leaveNode
ProfilerNodeVisitor::__construct public function
RSS feed
Powered by Drupal