8
8
9
9
class Loader implements LoaderInterface
10
10
{
11
+ /**
12
+ * The variable name whitelist.
13
+ *
14
+ * @var string[]|null
15
+ */
16
+ protected $ whitelist ;
17
+
18
+ /**
19
+ * Create a new loader instance.
20
+ *
21
+ * @param string[]|null $whitelist
22
+ *
23
+ * @return void
24
+ */
25
+ public function __construct (array $ whitelist = null )
26
+ {
27
+ $ this ->whitelist = $ whitelist ;
28
+ }
29
+
11
30
/**
12
31
* Load the given environment file content into the repository.
13
32
*
@@ -20,7 +39,7 @@ class Loader implements LoaderInterface
20
39
*/
21
40
public function load (RepositoryInterface $ repository , $ content )
22
41
{
23
- return self :: processEntries (
42
+ return $ this -> processEntries (
24
43
$ repository ,
25
44
Lines::process (Regex::split ("/( \r\n| \n| \r)/ " , $ content )->getSuccess ())
26
45
);
@@ -39,14 +58,16 @@ public function load(RepositoryInterface $repository, $content)
39
58
*
40
59
* @return array<string,string|null>
41
60
*/
42
- private static function processEntries (RepositoryInterface $ repository , array $ entries )
61
+ private function processEntries (RepositoryInterface $ repository , array $ entries )
43
62
{
44
63
$ vars = [];
45
64
46
65
foreach ($ entries as $ entry ) {
47
66
list ($ name , $ value ) = Parser::parse ($ entry );
48
- $ vars [$ name ] = self ::resolveNestedVariables ($ repository , $ value );
49
- $ repository ->set ($ name , $ vars [$ name ]);
67
+ if ($ this ->whitelist === null || in_array ($ name , $ this ->whitelist , true )) {
68
+ $ vars [$ name ] = self ::resolveNestedVariables ($ repository , $ value );
69
+ $ repository ->set ($ name , $ vars [$ name ]);
70
+ }
50
71
}
51
72
52
73
return $ vars ;
0 commit comments