4 * This file is part of Twig.
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
13 * Twig_Node_SandboxedPrint adds a check for the __toString() method
14 * when the variable is an object and the sandbox is activated.
16 * When there is a simple Print statement, like {{ article }},
17 * and if the sandbox is enabled, we need to check that the __toString()
18 * method is allowed if 'article' is an object.
20 * @author Fabien Potencier <fabien@symfony.com>
22 class Twig_Node_SandboxedPrint extends Twig_Node_Print
24 public function compile(Twig_Compiler $compiler)
28 ->write('echo $this->env->getExtension(\'Twig_Extension_Sandbox\')->ensureToStringAllowed(')
29 ->subcompile($this->getNode('expr'))
35 * Removes node filters.
37 * This is mostly needed when another visitor adds filters (like the escaper one).
41 protected function removeNodeFilter(Twig_Node $node)
43 if ($node instanceof Twig_Node_Expression_Filter) {
44 return $this->removeNodeFilter($node->getNode('node'));
51 class_alias('Twig_Node_SandboxedPrint', 'Twig\Node\SandboxedPrintNode', false);