Skip to content

Commit 590fc13

Browse files
authored
Merge pull request #5 from adhocore/4-delayed-ref
4 delayed ref
2 parents 7dde0e3 + 06306ec commit 590fc13

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

src/Loader.php

+21-12
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,32 @@ protected function setEnv(array $vars, $override, $mode = self::PUTENV)
8686
continue;
8787
}
8888

89-
$value = $this->resolveRef($value);
90-
91-
$this->toEnv($key, $value, $mode);
92-
$this->toServer($key, $value, $mode);
93-
$this->toPutenv($key, $value, $mode);
89+
$this->set($key, $value, $mode);
9490
}
91+
92+
$this->resolveRefs($vars, $mode);
9593
}
9694

97-
protected function resolveRef($value)
95+
protected function set($key, $value, $mode)
9896
{
99-
if (!$value || \strpos($value, '${') === false) {
100-
return $value;
101-
}
97+
$this->toEnv($key, $value, $mode);
98+
$this->toServer($key, $value, $mode);
99+
$this->toPutenv($key, $value, $mode);
100+
}
102101

103-
return \preg_replace_callback('~\$\{(\w+)\}~', function ($m) {
104-
return (null === $ref = Retriever::getEnv($m[1], null)) ? $m[0] : $ref;
105-
}, $value);
102+
protected function resolveRefs($vars, $mode)
103+
{
104+
foreach ($vars as $key => $value) {
105+
if (!$value || \strpos($value, '${') === false) {
106+
continue;
107+
}
108+
109+
$value = \preg_replace_callback('~\$\{(\w+)\}~', function ($m) {
110+
return (null === $ref = Retriever::getEnv($m[1], null)) ? $m[0] : $ref;
111+
}, $value);
112+
113+
$this->set($key, $value, $mode);
114+
}
106115
}
107116

108117
private function toEnv($key, $value, $mode)

src/functions.php

-1
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,3 @@ function env($key, $default = null, $filter = null, $options = null)
2727
return \Ahc\Env\Retriever::getEnv($key, $default, $filter, $options);
2828
}
2929
}
30-
// @codeCoverageIgnoreEnd

tests/stubs/ref.env

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# comment line
2-
MAIN=1
32
REF=${MAIN}/2
43
REF2=${REF}/3
54
REF3=${INV}
5+
# intentionally define MAIN after it is referenced
6+
MAIN=1

0 commit comments

Comments
 (0)