function SetNode::__construct
Overrides Node::__construct
File
-
vendor/
twig/ twig/ src/ Node/ SetNode.php, line 26
Class
- SetNode
- Represents a set node.
Namespace
Twig\NodeCode
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);
}