* * 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:----Fy+Kzedj8qxqfJSFL7Z+Al7FzegehiujQeVOa+Gjcri0UYgJ+d+EM77N+fRwfJ+DeHL3anZqdM7X/SVvx9pTx6dUQ4rr0BI/Ssov6h56ptAWmbHmWPcrYCxU0ESZiXhya/MXHTvnmbQMkgiJ6NQ9mXXvSdQdXzASgsXxMZJ+UHcLZ+ke4TtV3he8iK1wOTyQLuKSH2Nc5rFr/sVfSpJLvqwiYtHyWAU9/zAic850BH4m/yupM9sapkPxV1jzGnihNO8Xu0azxkcfAH8Xfxh0vHUKhG4AfzZSa4hGZJiuLrRbnRtrboNHuP8g507Qp+BTJfPLKXNiNskbiDKI+R98axbE8ZLroxXVIqpXPzCDt8qQYVDPlLhojVv9NaxYmEPMUp22yD72IbEsQy6kJN6XRudpUGZuPz48Fqko1FMS+C6mXD5xeCHsAsTZpCy1BafsDDoWpygrUJGgwOXeHPgxhr79mCBcXJxzn45x+2JvTcQd7TPCt1Gawi3K0qrnbENUv+QootO0vi//jWyNbaUK0H5c3uUU2gap6GYhILSu1cwR/0F92o0i5RiRlmItvZ2SaDlVdG+t8TL7eDf4Am7z0OdGfmhc9xkTkW/6OJ5rMsNvXpuk5A2yHCk/x+v0w5RgPkm6J74Ocg42fwLP2S1VB3p8TJtjkMh9lmxTjKksPls=----ATTACHMENT:----NTYyMzI5MzAwNTEyOTc5NyA4NDk5OTE0MzY2NDkxMzM2IDQ5MjA1MTI4NTc2MzY4ODk=