class CheckToStringNode
Checks if casting an expression to __toString() is allowed by the sandbox.
For instance, when there is a simple Print statement, like {{ article }}, and if the sandbox is enabled, we need to check that the __toString() method is allowed if 'article' is an object. The same goes for {{ article|upper }} or {{ random(article) }}
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Twig\Node\Node implements \Twig\Node\Countable, \Twig\Node\IteratorAggregate
- class \Twig\Node\Expression\AbstractExpression extends \Twig\Node\Node
- class \Twig\Node\CheckToStringNode extends \Twig\Node\Expression\AbstractExpression
- class \Twig\Node\Expression\AbstractExpression extends \Twig\Node\Node
Expanded class hierarchy of CheckToStringNode
4 files declare their use of CheckToStringNode
- RemoveCheckToStringNodeVisitor.php in core/
lib/ Drupal/ Core/ Template/ RemoveCheckToStringNodeVisitor.php - SandboxNodeVisitor.php in vendor/
twig/ twig/ src/ NodeVisitor/ SandboxNodeVisitor.php - TwigNodeTrans.php in core/
lib/ Drupal/ Core/ Template/ TwigNodeTrans.php - TwigSimpleCheckToStringNode.php in core/
lib/ Drupal/ Core/ Template/ TwigSimpleCheckToStringNode.php
File
-
vendor/
twig/ twig/ src/ Node/ CheckToStringNode.php, line 28
Namespace
Twig\NodeView source
class CheckToStringNode extends AbstractExpression {
public function __construct(AbstractExpression $expr) {
parent::__construct([
'expr' => $expr,
], [], $expr->getTemplateLine());
}
public function compile(Compiler $compiler) : void {
$expr = $this->getNode('expr');
$compiler->raw('$this->sandbox->ensureToStringAllowed(')
->subcompile($expr)
->raw(', ')
->repr($expr->getTemplateLine())
->raw(', $this->source)');
}
}