private function load($config, $filename = false)
{
if ($filename) {
$included = [$this->normalizeConfigName($filename)];
} else {
$included = [];
}
while (isset($config['extends'])) {
$baseConfigName = $config['extends'];
$baseConfigDir = $filename ? dirname($filename) : '.';
$baseConfigPath = $baseConfigDir . DIRECTORY_SEPARATOR . $baseConfigName . '.yml';
$baseConfig = $this->parseFile($baseConfigPath);
unset($config['extends']);
$config = $this->mergeRecursive($baseConfig, $config);
if (isset($config['extends'])) {
if (in_array($this->normalizeConfigName($config['extends']), $included)) {
// Avoid circular dependencies
unset($config['extends']);
} else {
$included[] = $this->normalizeConfigName($config['extends']);
}
}
}
return new Config($config);
}