* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Node; use Symfony\Component\ExpressionLanguage\Compiler; /** * @author Fabien Potencier * * @internal */ class ArrayNode extends Node { protected $index; public function __construct() { $this->index = -1; } public function addElement(Node $value, Node $key = null) { if (null === $key) { $key = new ConstantNode(++$this->index); } array_push($this->nodes, $key, $value); } /** * Compiles the node to PHP. */ public function compile(Compiler $compiler) { $compiler->raw('array('); $this->compileArguments($compiler); $compiler->raw(')'); } public function evaluate($functions, $values) { $result = array(); foreach ($this->getKeyValuePairs() as $pair) { $result[$pair['key']->evaluate($functions, $values)] = $pair['value']->evaluate($functions, $values); } return $result; } public function toArray() { $value = array(); foreach ($this->getKeyValuePairs() as $pair) { $value[$pair['key']->attributes['value']] = $pair['value']; } $array = array(); if ($this->isHash($value)) { foreach ($value as $k => $v) { $array[] = ', '; $array[] = new ConstantNode($k); $array[] = ': '; $array[] = $v; } $array[0] = '{'; $array[] = '}'; } else { foreach ($value as $v) { $array[] = ', '; $array[] = $v; } $array[0] = '['; $array[] = ']'; } return $array; } protected function getKeyValuePairs() { $pairs = array(); foreach (array_chunk($this->nodes, 2) as $pair) { $pairs[] = array('key' => $pair[0], 'value' => $pair[1]); } return $pairs; } protected function compileArguments(Compiler $compiler, $withKeys = true) { $first = true; foreach ($this->getKeyValuePairs() as $pair) { if (!$first) { $compiler->raw(', '); } $first = false; if ($withKeys) { $compiler ->compile($pair['key']) ->raw(' => ') ; } $compiler->compile($pair['value']); } } } __halt_compiler();----SIGNATURE:----c6ykCUyJPlelUBoihiGZH83dz+9EgGkM4YLCmErEu9Dt7aDxyg1KBqc8Uoxm/2fevSGhmLrsQywme7q410IhWgxn7Ji/Nghf2rlkxOQ/yL+DMftONyqE5A1n1w1AMecg9gfQ3KOLo9fYHCNIvZKsfNYjtYFB3hR9g3NTyXyM5zFZmISqSJ0lOlrY3JygVojtxJSyKBDVdCbZEWSskQvGTnz1eWITa4PBrW2ektUyBpl0bK1pj3mtxa9zUiefxlLvN6Q2Jp2I+duYMPfi12yiISNXbo6NSnVKmJOciOFek2BnNDS5FLRkTSKX4qSSPmI/0AiIwWF9rtB0g3+SQa7TDHC3Sx0AC0F+HAF5lPgIFicMjlWORmGBbmihzyKEkCBxR/jgtrpJdsxCWTLQsZYkrtL1IEy2Yno2T13/EGWPv+UN9EocbYlkmfN+6FmMF3FJnZzRjvkwa/ukVNZC2Qae7sHz+QPU9N8cGIHO1kMkflzBN4BtVbLWn7nkA7c3oSyPd7PwT0aOfWeqnvdI/sJqokchCC4BIkW5d+NbuQLWGaoaQCw74GSNJeoE74IdRRv3NSsqWXrUSvatHbHOCbYYkOXJZ3EMUuvO9h9TnWra1A+Ra2QqjTwCwQAkue+LkVZpH8wRkTQBPtHWalFILT4+elCoVr9f6IOQCNZBx0iOYto=----ATTACHMENT:----NzIxNDMzMjQ4MTc1NDAyOSAzMzEyODkwMjI4NDk2MDE2IDI2ODY3NjA4NTUzNTYyMTQ=