Completed
Push — dev-master ( 2e700a...a98bb1 )
by Derek Stephen
12s
created

Environment::getPwd()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace Bone\Server;
4
5
use Bone\Traits\HasAttributesTrait;
6
7
class Environment
8
{
9
    use HasAttributesTrait;
10
11
    /**
12
     * Environment constructor.
13
     * @param array $serverGlobals
14
     */
15 19
    public function __construct(array $serverGlobals)
16 19
    {
17 19
        $this->setAttributes($serverGlobals);
18 19
    }
19
20
    /**
21
     * @param string $configFolder
22
     * @param string $applicationEnvironment
23
     * @return array
24
     */
25 3
    public function fetchConfig(string $configFolder, string $applicationEnvironment) : array
26 3
    {
27 3
        $config = $this->loadLegacyConfig($configFolder);
28
29 3
        if (!empty($applicationEnvironment)) {
30 2
            $config = $this->loadEnvironmentConfig($configFolder, $applicationEnvironment, $config);
31
        }
32
33 3
        return $config;
34
    }
35
36
    /**
37
     * @param string $configFolder
38
     * @return array
39
     */
40 3
    private function loadLegacyConfig(string $configFolder): array
41 3
    {
42 3
        $config = [];
43
44 3
        $path = $configFolder . '/config.php';
45 3
        if (file_exists($path)) {
46 3
            $config = $this->loadInConfig($config, $path);
47
        }
48
49 3
        return $config;
50
    }
51
52
    /**
53
     * @param string $configFolder
54
     * @param string $applicationEnvironment
55
     * @param array $config
56
     * @return array
57
     */
58 2
    private function loadEnvironmentConfig(string $configFolder, string $applicationEnvironment, array $config): array
59 2
    {
60 2
        $path = $configFolder . '/' . $applicationEnvironment;
61 2
        if (file_exists($path)) {
62 2
            $files = glob($path . '/*.php');
63 2
            foreach ($files as $file) {
64 2
                $config = $this->loadInConfig($config, $file);
65
            }
66
        }
67
68 2
        return $config;
69
    }
70
71
    /**
72
     * @param array $config
73
     * @param string $file
74
     * @return array
75
     */
76 3
    private function loadInConfig(array $config, string $file): array
77 3
    {
78 3
        $moreConfig = include $file;
79 3
        if (is_array($moreConfig)) {
80 3
            $config = array_merge($config, $moreConfig);
81
        }
82
83 3
        return $config;
84
    }
85
86
    /**
87
     * @return string
88
     */
89
    public function getApplicationEnv(): string
90
    {
91
        return $this->getAttribute('APPLICATION_ENV');
92
    }
93
94
    /**
95
     * @return string
96
     */
97
    public function getPhpIniDir(): string
98
    {
99
        return $this->getAttribute('PHP_INI_DIR');
100
    }
101
102
    /**
103
     * @return string
104
     */
105
    public function getPwd(): string
106
    {
107
        return $this->getAttribute('PWD');
108
    }
109
110
    /**
111
     * @return string
112
     */
113
    public function getUser(): string
114
    {
115
        return $this->getAttribute('USER');
116
    }
117
118
    /**
119
     * @return string
120
     */
121
    public function getRequestUri(): string
122
    {
123
        return $this->getAttribute('REQUEST_URI');
124
    }
125
126
    /**
127
     * @return string
128
     */
129
    public function getQueryString(): string
130
    {
131
        return $this->getAttribute('QUERY_STRING');
132
    }
133
134
    /**
135
     * @return string
136
     */
137
    public function getRequestMethod(): string
138
    {
139
        return $this->getAttribute('REQUEST_METHOD');
140
    }
141
142
    /**
143
     * @return string
144
     */
145
    public function getScriptFilename(): string
146
    {
147
        return $this->getAttribute('SCRIPT_FILENAME');
148
    }
149
150
    /**
151
     * @return string
152
     */
153
    public function getServerAdmin(): string
154
    {
155
        return $this->getAttribute('SERVER_ADMIN');
156
    }
157
158
    /**
159
     * @return string
160
     */
161
    public function getRequestScheme(): string
162
    {
163
        return $this->getAttribute('REQUEST_SCHEME');
164
    }
165
166
    /**
167
     * @return string
168
     */
169
    public function getDocumentRoot(): string
170
    {
171
        return $this->getAttribute('DOCUMENT_ROOT');
172
    }
173
174
    /**
175
     * @return string
176
     */
177
    public function getRemoteAddress(): string
178
    {
179
        return $this->getAttribute('REMOTE_ADDR');
180
    }
181
182
    /**
183
     * @return string
184
     */
185
    public function getServerPort(): string
186
    {
187
        return $this->getAttribute('SERVER_PORT');
188
    }
189
190
    /**
191
     * @return string
192
     */
193
    public function getServerName(): string
194
    {
195
        return $this->getAttribute('SERVER_NAME');
196
    }
197
198
    /**
199
     * @return string
200
     */
201
    public function getHttpHost(): string
202
    {
203
        return $this->getAttribute('HTTP_HOST');
204
    }
205
}