diff --git a/src/Detail/VarCrypt/MultiEncryptor.php b/src/Detail/VarCrypt/MultiEncryptor.php index 2d8394d..55d9dd5 100644 --- a/src/Detail/VarCrypt/MultiEncryptor.php +++ b/src/Detail/VarCrypt/MultiEncryptor.php @@ -30,11 +30,7 @@ public function applyVariables($groups, $separator = '_') foreach ($groups as $group) { $values = $this->getVariables($group); - foreach ($values as $variable => $value) { - $name = $group . $separator . $variable; - - $this->setEnvironmentVariable($name, $value); - } + $this->setEnvironmentVariables($values, $group, $separator); } } @@ -112,6 +108,26 @@ public function decode($value) return $values; } + /** + * Recursively set environment variables (for each leaf). + * + * @param array $values + * @param string $prefix + * @param string $separator + */ + protected function setEnvironmentVariables(array $values, $prefix, $separator = '_') + { + foreach ($values as $variable => $value) { + $name = $prefix . $separator . $variable; + + if (is_array($value)) { + $this->setEnvironmentVariables($value, $name, $separator); + } else { + $this->setEnvironmentVariable($name, $value); + } + } + } + /** * @param string $errorMessage */