for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Borobudur-Config package.
*
* (c) Hexacodelabs <http://hexacodelabs.com>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Borobudur\Config;
use Borobudur\Config\Definition\ArrayNode;
use Borobudur\Config\Definition\NodeInterface;
/**
* @author Iqbal Maulana <[email protected]>
* @created 8/11/15
class ConfigParser
{
* Parse configuration.
* @param NodeInterface $node
* @param array $configs
* @return array
public static function parse(NodeInterface $node, array $configs)
$current = self::initializeCurrentConfig($node);
foreach ($configs as $index => $config) {
if (!is_int($index) && $index !== $node->getName()) {
continue;
}
$config = $node->normalize($config);
$current = $node->merge($current, $config);
return $node->finalize($current);
* Parse configs from config definition.
* @param ConfigDefinitionInterface $config
public static function parseConfiguration(ConfigDefinitionInterface $config, array $configs)
return self::parse($config->getConfigTreeBuilder()->getNode(), $configs);
* Initialize start config.
* @return array|null
private static function initializeCurrentConfig(NodeInterface $node)
return $node instanceof ArrayNode ? array() : null;