public function process(NodeInterface $configTree, array $configs) { $configs = Extension::normalizeKeys($configs); $currentConfig = array(); foreach ($configs as $config) { $config = $configTree->normalize($config); $currentConfig = $configTree->merge($currentConfig, $config); } return $configTree->finalize($currentConfig); }
public function addChild(NodeInterface $node) { $name = $node->getName(); if (empty($name)) { throw new \InvalidArgumentException('Node name cannot be empty.'); } if (isset($this->children[$name])) { throw new \InvalidArgumentException(sprintf('The node "%s" already exists.', $name)); } if (null !== $this->prototype) { throw new \RuntimeException('An ARRAY node must either have a prototype, or concrete children.'); } $this->children[$name] = $node; }