<?php namespace Smarty\Compile\Tag; /** * Smarty Internal Plugin Compile Append * Compiles the {append} tag * * @author Uwe Tews */ /** * Smarty Internal Plugin Compile Append Class * */ class Append extends Assign { /** * @inheritdoc */ protected $optional_attributes = ['scope', 'index']; /** * Compiles code for the {append} tag * * @param array $args array with attributes from parser * @param \Smarty\Compiler\Template $compiler compiler object * @param array $parameter array with compilation parameter * * @return string compiled code * @throws \Smarty\CompilerException */ public function compile($args, \Smarty\Compiler\Template $compiler, $parameter = array(), $tag = null, $function = null): string { // check and get attributes $_attr = $this->getAttributes($compiler, $args); // map to compile assign attributes if (isset($_attr[ 'index' ])) { $_params[ 'smarty_internal_index' ] = '[' . $_attr[ 'index' ] . ']'; unset($_attr[ 'index' ]); } else { $_params[ 'smarty_internal_index' ] = '[]'; } $_new_attr = array(); foreach ($_attr as $key => $value) { $_new_attr[] = array($key => $value); } // call compile assign return parent::compile($_new_attr, $compiler, $_params); } }