/** * @param Node $key * Array element's key. * @param Node $value * Array element's value. * * @return ArrayPairNode */ public static function create($key, $value) { $node = new ArrayPairNode(); $node->addChild($key, 'key'); $node->addChild(Token::space()); $node->addChild(Token::doubleArrow()); $node->addChild(Token::space()); $node->addChild($value, 'value'); return $node; }
/** * Parse an array pair. * @return Node */ private function arrayPair() { if ($this->currentType === '&') { return $this->writeVariable(); } $node = $this->expr(); if ($this->currentType === T_DOUBLE_ARROW) { $expr = $node; $node = new ArrayPairNode(); $node->addChild($expr, 'key'); $this->mustMatch(T_DOUBLE_ARROW, $node); if ($this->currentType === '&') { $node->addChild($this->writeVariable(), 'value'); } else { $node->addChild($this->expr(), 'value'); } } return $node; }