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

Breadcrumb

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

function SetNode::__construct

Overrides Node::__construct

File

vendor/twig/twig/src/Node/SetNode.php, line 26

Class

SetNode
Represents a set node.

Namespace

Twig\Node

Code

public function __construct(bool $capture, Node $names, Node $values, int $lineno) {
    
    /*
     * Optimizes the node when capture is used for a large block of text.
     *
     * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig\Markup("foo");
     */
    $safe = false;
    if ($capture) {
        $safe = true;
        // Node::class === get_class($values) should be removed in Twig 4.0
        if (($values instanceof Nodes || Node::class === get_class($values)) && !count($values)) {
            $values = new ConstantExpression('', $values->getTemplateLine());
            $capture = false;
        }
        elseif ($values instanceof TextNode) {
            $values = new ConstantExpression($values->getAttribute('data'), $values->getTemplateLine());
            $capture = false;
        }
        elseif ($values instanceof PrintNode && $values->getNode('expr') instanceof ConstantExpression) {
            $values = $values->getNode('expr');
            $capture = false;
        }
        else {
            $values = new CaptureNode($values, $values->getTemplateLine());
        }
    }
    parent::__construct([
        'names' => $names,
        'values' => $values,
    ], [
        'capture' => $capture,
        'safe' => $safe,
    ], $lineno);
}
RSS feed
Powered by Drupal