|
|
@@ -119,7 +119,7 @@ class Zend_Application
|
|
|
$options = array_change_key_case($options, CASE_LOWER);
|
|
|
|
|
|
if (!empty($options['config'])) {
|
|
|
- $options = array_merge($options, $this->_loadConfig($options['config']));
|
|
|
+ $options = $this->mergeOptions($options, $this->_loadConfig($options['config']));
|
|
|
}
|
|
|
|
|
|
$this->_options = $options;
|
|
|
@@ -198,6 +198,29 @@ class Zend_Application
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Merge options recursively
|
|
|
+ *
|
|
|
+ * @param array $array1
|
|
|
+ * @param mixed $array2
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function mergeOptions(array $array1, $array2 = null)
|
|
|
+ {
|
|
|
+ if (is_array($array2)) {
|
|
|
+ foreach ($array2 as $key => $val) {
|
|
|
+ if (is_array($array2[$key])) {
|
|
|
+ $array1[$key] = (array_key_exists($key, $array1) && is_array($array1[$key]))
|
|
|
+ ? $this->mergeOptions($array1[$key], $array2[$key])
|
|
|
+ : $array2[$key];
|
|
|
+ } else {
|
|
|
+ $array1[$key] = $val;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $array1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Set PHP configuration settings
|
|
|
*
|
|
|
* @param array $settings
|