From 93c2536f186e95a5c9b8920d3f055acbf3fe80cf Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 15 Nov 2018 23:30:25 -0500 Subject: [PATCH] Add deep merge between default and local settings --- src/settings.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/settings.php b/src/settings.php index d71425f..aa0d6d0 100644 --- a/src/settings.php +++ b/src/settings.php @@ -58,6 +58,24 @@ $settings = [ ], ]; +function settings_merge_recursive($defaults, $local) { + $return = []; + foreach ($defaults as $key => $value) { + if (isset($local[$key])) { + if (is_array($value)) { + $return[$key] = settings_merge_recursive($value, $local[$key]); + } else { + $return[$key] = $local[$key]; + } + } else { + $return[$key] = $value; + } + } + + return $return; +} + return [ - 'settings' => $localSettings + $settings + 'settings' => settings_merge_recursive($settings, $localSettings) ]; +