Skip to content

Commit fba6413

Browse files
Support boolean values in $_ENV and $_SERVER (#457)
1 parent 3af4965 commit fba6413

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

src/Repository/Adapter/EnvConstAdapter.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,20 @@ public static function create()
4040
public function read(string $name)
4141
{
4242
/** @var \PhpOption\Option<string> */
43-
return Option::fromArraysValue($_ENV, $name)->filter(static function ($value) {
44-
return \is_string($value);
45-
});
43+
return Option::fromArraysValue($_ENV, $name)
44+
->map(static function ($value) {
45+
if ($value === false) {
46+
return 'false';
47+
}
48+
49+
if ($value === true) {
50+
return 'true';
51+
}
52+
53+
return $value;
54+
})->filter(static function ($value) {
55+
return \is_string($value);
56+
});
4657
}
4758

4859
/**

src/Repository/Adapter/ServerConstAdapter.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,20 @@ public static function create()
4040
public function read(string $name)
4141
{
4242
/** @var \PhpOption\Option<string> */
43-
return Option::fromArraysValue($_SERVER, $name)->filter(static function ($value) {
44-
return \is_string($value);
45-
});
43+
return Option::fromArraysValue($_SERVER, $name)
44+
->map(static function ($value) {
45+
if ($value === false) {
46+
return 'false';
47+
}
48+
49+
if ($value === true) {
50+
return 'true';
51+
}
52+
53+
return $value;
54+
})->filter(static function ($value) {
55+
return \is_string($value);
56+
});
4657
}
4758

4859
/**

tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,22 @@ public function testGoodRead()
1717
self::assertSame('foo bar baz', $value->get());
1818
}
1919

20+
public function testFalseRead()
21+
{
22+
$_ENV['CONST_TEST'] = false;
23+
$value = self::createAdapter()->read('CONST_TEST');
24+
self::assertTrue($value->isDefined());
25+
self::assertSame('false', $value->get());
26+
}
27+
28+
public function testTrueRead()
29+
{
30+
$_ENV['CONST_TEST'] = true;
31+
$value = self::createAdapter()->read('CONST_TEST');
32+
self::assertTrue($value->isDefined());
33+
self::assertSame('true', $value->get());
34+
}
35+
2036
public function testBadTypeRead()
2137
{
2238
$_ENV['CONST_TEST'] = 123;

tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,22 @@ public function testGoodRead()
1717
self::assertSame('foo bar baz', $value->get());
1818
}
1919

20+
public function testFalseRead()
21+
{
22+
$_SERVER['CONST_TEST'] = false;
23+
$value = self::createAdapter()->read('CONST_TEST');
24+
self::assertTrue($value->isDefined());
25+
self::assertSame('false', $value->get());
26+
}
27+
28+
public function testTrueRead()
29+
{
30+
$_SERVER['CONST_TEST'] = true;
31+
$value = self::createAdapter()->read('CONST_TEST');
32+
self::assertTrue($value->isDefined());
33+
self::assertSame('true', $value->get());
34+
}
35+
2036
public function testBadTypeRead()
2137
{
2238
$_SERVER['CONST_TEST'] = 123;

0 commit comments

Comments
 (0)