Файл: upload/core/vendor/twig/twig/src/Node/SandboxNode.php
Строк: 61
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace TwigNode;
use TwigAttributeYieldReady;
use TwigCompiler;
/**
* Represents a sandbox node.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
#[YieldReady]
class SandboxNode extends Node
{
public function __construct(Node $body, int $lineno)
{
parent::__construct(['body' => $body], [], $lineno);
}
public function compile(Compiler $compiler): void
{
$compiler
->addDebugInfo($this)
->write("if (!$alreadySandboxed = $this->sandbox->isSandboxed()) {n")
->indent()
->write("$this->sandbox->enableSandbox();n")
->outdent()
->write("}n")
->write("try {n")
->indent()
->subcompile($this->getNode('body'))
->outdent()
->write("} finally {n")
->indent()
->write("if (!$alreadySandboxed) {n")
->indent()
->write("$this->sandbox->disableSandbox();n")
->outdent()
->write("}n")
->outdent()
->write("}n")
;
}
}