X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fconsolidation%2Fconfig%2Fsrc%2FUtil%2FConfigOverlay.php;fp=vendor%2Fconsolidation%2Fconfig%2Fsrc%2FUtil%2FConfigOverlay.php;h=2257ef615ca88a3bfbf98da08bb30b1cb6f6e3e3;hp=d1f12697742fdff20b6954b5ef89aa61c1d51877;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/vendor/consolidation/config/src/Util/ConfigOverlay.php b/vendor/consolidation/config/src/Util/ConfigOverlay.php index d1f126977..2257ef615 100644 --- a/vendor/consolidation/config/src/Util/ConfigOverlay.php +++ b/vendor/consolidation/config/src/Util/ConfigOverlay.php @@ -3,6 +3,9 @@ namespace Consolidation\Config\Util; use Consolidation\Config\Config; use Consolidation\Config\ConfigInterface; +use Consolidation\Config\Util\ArrayUtil; +use Consolidation\Config\Util\ConfigInterpolatorInterface; +use Consolidation\Config\Util\ConfigInterpolatorTrait; /** * Overlay different configuration objects that implement ConfigInterface @@ -12,8 +15,9 @@ use Consolidation\Config\ConfigInterface; * individual configuration context. When using overlays, always call * getDefault / setDefault on the ConfigOverlay object itself. */ -class ConfigOverlay implements ConfigInterface +class ConfigOverlay implements ConfigInterface, ConfigInterpolatorInterface { + use ConfigInterpolatorTrait; protected $contexts = []; const DEFAULT_CONTEXT = 'default'; @@ -115,6 +119,14 @@ class ConfigOverlay implements ConfigInterface * @inheritdoc */ public function get($key, $default = null) + { + if (is_array($default)) { + return $this->getUnion($key); + } + return $this->getSingle($key, $default); + } + + public function getSingle($key, $default = null) { $context = $this->findContext($key); if ($context) { @@ -123,6 +135,18 @@ class ConfigOverlay implements ConfigInterface return $default; } + public function getUnion($key) + { + $result = []; + foreach (array_reverse($this->contexts) as $name => $config) { + $item = (array) $config->get($key, []); + if ($item !== null) { + $result = array_merge($result, $item); + } + } + return $result; + } + /** * @inheritdoc */ @@ -171,7 +195,8 @@ class ConfigOverlay implements ConfigInterface { $export = []; foreach ($this->contexts as $name => $config) { - $export = array_merge_recursive($export, $config->export()); + $exportToMerge = $config->export(); + $export = \array_replace_recursive($export, $exportToMerge); } return $export; }