compileArguments example

use Symfony\Component\ExpressionLanguage\Compiler;

/** * @author Fabien Potencier <fabien@symfony.com> * * @internal */
class ArgumentsNode extends ArrayNode
{
    public function compile(Compiler $compiler): void
    {
        $this->compileArguments($compiler, false);
    }

    public function toArray(): array
    {
        $array = [];

        foreach ($this->getKeyValuePairs() as $pair) {
            $array[] = $pair['value'];
            $array[] = ', ';
        }
        array_pop($array);

        
$key ??= new ConstantNode(++$this->index);

        array_push($this->nodes, $key$value);
    }

    /** * Compiles the node to PHP. */
    public function compile(Compiler $compiler): void
    {
        $compiler->raw('[');
        $this->compileArguments($compiler);
        $compiler->raw(']');
    }

    public function evaluate(array $functions, array $values): array
    {
        $result = [];
        foreach ($this->getKeyValuePairs() as $pair) {
            $result[$pair['key']->evaluate($functions$values)] = $pair['value']->evaluate($functions$values);
        }

        return $result;
    }
                    $compiler->raw(sprintf('$this->env->getExtension(\'%s\')', $class));
                } else {
                    $compiler->raw(sprintf('$this->extensions[\'%s\']', ltrim($class, '\\')));
                }

                $compiler->raw(sprintf('->%s', $callable[1]));
            } else {
                $compiler->raw(sprintf('$this->env->get%s(\'%s\')->getCallable()', ucfirst($this->getAttribute('type'))$this->getAttribute('name')));
            }
        }

        $this->compileArguments($compiler);
    }

    protected function compileArguments(Compiler $compiler$isArray = false): void
    {
        $compiler->raw($isArray ? '[' : '(');

        $first = true;

        if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) {
            $compiler->raw('$this->env');
            $first = false;
        }
Home | Imprint | This part of the site doesn't use cookies.