Skip to content

Commit 8ecec90

Browse files
committed
Улучшенные манипуляции с $_ENV.
1 parent 9701a30 commit 8ecec90

File tree

2 files changed

+67
-12
lines changed

2 files changed

+67
-12
lines changed

src/ServiceProvider.php

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -180,18 +180,7 @@ public function __construct(
180180
string $filename = self::SERVICE_CONFIG_FILE,
181181
?string $pathBundlesConfig = null
182182
) {
183-
// Buggy local fix.
184-
$_ENV['DEBUG'] = env('DEBUG', false);
185-
if (array_key_exists('APP_DEBUG', $_ENV) && $_ENV['APP_DEBUG'] !== null) {
186-
$_ENV['DEBUG'] = (bool)$_ENV['APP_DEBUG'];
187-
}
188-
189-
$this->environment = $_ENV['DEBUG'] ? 'dev' : 'prod';
190-
if (array_key_exists('APP_ENV', $_ENV) && $_ENV['APP_ENV'] !== null) {
191-
$this->environment = $_ENV['APP_ENV'];
192-
}
193-
194-
$this->debug = (bool)$_ENV['DEBUG'];
183+
$this->setupEnv();
195184

196185
$this->errorHandler = new ErrorScreen(new CMain());
197186
$this->filesystem = new Filesystem();
@@ -300,6 +289,31 @@ public function shutdown() : void
300289
static::$containerBuilder = null;
301290
}
302291

292+
/**
293+
* Манипуляции с переменными окружения.
294+
*
295+
* @return void
296+
*/
297+
private function setupEnv() : void
298+
{
299+
$_ENV['DEBUG'] = $_ENV['DEBUG'] ?? false;
300+
if ($_ENV['DEBUG'] !== false) {
301+
if (is_string($_ENV['DEBUG'])) {
302+
$_ENV['DEBUG'] = $_ENV['DEBUG'] === 'true' || $_ENV['DEBUG'] === '1';
303+
} else {
304+
$_ENV['DEBUG'] = (bool)$_ENV['DEBUG'];
305+
}
306+
}
307+
308+
$this->environment = $_ENV['DEBUG'] ? 'dev' : 'prod';
309+
310+
if (array_key_exists('APP_ENV', $_ENV) && $_ENV['APP_ENV'] !== null) {
311+
$this->environment = $_ENV['APP_ENV'];
312+
}
313+
314+
$this->debug = $_ENV['DEBUG'];
315+
}
316+
303317
/**
304318
* Boot.
305319
*

tests/Cases/ServiceProviderTest.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,47 @@ public function testGetPathCacheDirectory() : void
288288
);
289289
}
290290

291+
/**
292+
* Манипуляции с $_ENV.
293+
*
294+
* @param mixed $envDebug Значение $_ENV['DEBUG'].
295+
* @param bool $expected Ожидаемое.
296+
*
297+
* @return void
298+
*
299+
* @throws Exception
300+
* @dataProvider dataProviderEnvDebugValues
301+
*/
302+
public function testSetEnv($envDebug, bool $expected) : void
303+
{
304+
$backup = $_ENV;
305+
$_ENV['DEBUG'] = $envDebug;
306+
307+
$this->obTestObject = new ServiceProvider($this->pathYamlConfig);
308+
309+
$this->assertSame($_ENV['DEBUG'], $expected);
310+
311+
$_ENV = $backup;
312+
}
313+
314+
/**
315+
* @return array
316+
*/
317+
public function dataProviderEnvDebugValues() : array
318+
{
319+
return [
320+
'0-number' => [0, false],
321+
'1-number' => [1, true],
322+
'0-string' => ['0', false],
323+
'1-string' => ['1', true],
324+
'true-string' => ['true', true],
325+
'false-string' => ['false', false],
326+
'null-string' => [null, false],
327+
'true' => [true, true],
328+
'false' => [false, false],
329+
];
330+
}
331+
291332
/**
292333
* Рекурсивно удалить папку со всем файлами и папками.
293334
*

0 commit comments

Comments
 (0)