• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

JBZoo / Utils / 29770052588

20 Jul 2026 06:55PM UTC coverage: 92.619% (-0.1%) from 92.722%
29770052588

push

github

web-flow
Merge pull request #57 from JBZoo/release/8.0

8.0.0 — PHP 8.3+ floor & lock-step major

15 of 16 new or added lines in 7 files covered. (93.75%)

106 existing lines in 13 files now uncovered.

1669 of 1802 relevant lines covered (92.62%)

41.2 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.43
/src/Env.php
1
<?php
2

3
/**
4
 * JBZoo Toolbox - Utils.
5
 *
6
 * This file is part of the JBZoo Toolbox project.
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @license    MIT
11
 * @copyright  Copyright (C) JBZoo.com, All rights reserved.
12
 * @see        https://github.com/JBZoo/Utils
13
 */
14

15
declare(strict_types=1);
16

17
namespace JBZoo\Utils;
18

19
/**
20
 * @psalm-suppress UnusedClass
21
 */
22
final class Env
23
{
24
    public const VAR_NULL   = 1;
25
    public const VAR_BOOL   = 2;
26
    public const VAR_INT    = 4;
27
    public const VAR_FLOAT  = 8;
28
    public const VAR_STRING = 16;
29

30
    /**
31
     * Returns an environment variable.
32
     * @SuppressWarnings(PHPMD.Superglobals)
33
     */
34
    public static function get(
35
        string $envVarName,
36
        bool|float|int|string|null $default = null,
37
        int $options = self::VAR_STRING,
38
    ): bool|float|int|string|null {
39
        $envKey = \trim($envVarName);
30✔
40

41
        $value = \getenv($envKey);
30✔
42
        if ($value === false) {
30✔
43
            if (\array_key_exists($envKey, $_ENV)) {
30✔
44
                $envValue = (string)($_ENV[$envKey] ?? '');
30✔
45

46
                return self::convert($envValue, $options);
30✔
47
            }
48

49
            return $default;
30✔
50
        }
51

52
        return self::convert($value, $options);
30✔
53
    }
54

55
    /**
56
     * Converts the type of values like "true", "false", "null" or "123".
57
     */
58
    public static function convert(?string $value, int $options = self::VAR_STRING): bool|float|int|string|null
59
    {
60
        $cleanedValue = \trim(Filter::stripQuotes((string)$value));
132✔
61

62
        if (($options & self::VAR_NULL) > 0) {
132✔
63
            $cleanedValue = \strtolower($cleanedValue);
36✔
64
            if (\in_array($cleanedValue, ['null', 'nil', 'undefined'], true)) {
36✔
65
                return null;
12✔
66
            }
67
        }
68

69
        if (($options & self::VAR_STRING) > 0) {
120✔
70
            return $cleanedValue;
24✔
71
        }
72

73
        if (($options & self::VAR_FLOAT) > 0) {
102✔
74
            return Filter::float($cleanedValue);
24✔
75
        }
76

77
        if (($options & self::VAR_INT) > 0) {
84✔
78
            return Filter::int((int)$cleanedValue);
18✔
79
        }
80

81
        if (($options & self::VAR_BOOL) > 0) {
72✔
82
            return Filter::bool($cleanedValue);
36✔
83
        }
84

85
        return $value;
36✔
86
    }
87

88
    /**
89
     * Convert value of environment variable to clean string.
90
     */
91
    public static function string(string $envVarName, string $default = ''): string
92
    {
93
        if (self::isExists($envVarName)) {
6✔
94
            return (string)self::get($envVarName, $default, self::VAR_STRING);
6✔
95
        }
96

97
        return $default;
6✔
98
    }
99

100
    /**
101
     * Convert value of environment variable to strict integer value.
102
     */
103
    public static function int(string $envVarName, int $default = 0): int
104
    {
105
        if (self::isExists($envVarName)) {
6✔
106
            return (int)self::get($envVarName, $default, self::VAR_INT);
6✔
107
        }
108

109
        return $default;
6✔
110
    }
111

112
    /**
113
     * Convert value of environment variable to strict float value.
114
     */
115
    public static function float(string $envVarName, float $default = 0.0): float
116
    {
117
        if (self::isExists($envVarName)) {
6✔
118
            return (float)self::get($envVarName, $default, self::VAR_FLOAT);
6✔
119
        }
120

121
        return $default;
6✔
122
    }
123

124
    /**
125
     * Convert value of environment variable to strict bool value.
126
     */
127
    public static function bool(string $envVarName, bool $default = false): bool
128
    {
UNCOV
129
        if (self::isExists($envVarName)) {
×
130
            return (bool)self::get($envVarName, $default, self::VAR_BOOL);
×
131
        }
132

UNCOV
133
        return $default;
×
134
    }
135

136
    /**
137
     * Returns true if environment variable exists.
138
     */
139
    public static function isExists(string $envVarName): bool
140
    {
141
        return self::get($envVarName, null, self::VAR_NULL) !== null;
24✔
142
    }
143
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc