private function mergeConfiguration(array $configuration)
{
$originalConfiguration = $configuration;
// normalize keys to lower case
foreach ($configuration as $key => $value) {
$configuration[strtolower($key)] = $value;
}
// add definition configuration by it's real key
$configKeys = array_keys($this->configuration);
foreach ($configKeys as $key) {
$normalizedKey = strtolower($key);
if (isset($configuration[$normalizedKey])) {
$this->configuration[$key] = $configuration[$normalizedKey];
unset($configuration[$normalizedKey]);
}
}
// add custom configuration by it's original key
foreach ($originalConfiguration as $key => $value) {
$normalizedKey = strtolower($key);
if (isset($configuration[$normalizedKey])) {
$this->configuration[$key] = $originalConfiguration[$key];
}
}
$this->processFields();
return $this;
}