rayanlevert / dotenv
Dependency-free environment file handler (.env) loading variables and its values in $_ENV, $_SERVER and getenv() in the PHP userland
3.0.0
2025-01-01 18:47 UTC
Requires
- php: >=8.4
Requires (Dev)
- phpstan/phpstan: ^2.1.0
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.7
README
Version >= 3.0 supports only php8.4 with all brand new features, for >= php8.1, version 2.0 is still supported.
Initializes the instance setting the file path
$oDotenv = new \RayanLevert\Dotenv\Dotenv('/file/to/.dotenv');
An exception RayanLevert\Dotenv\Exception
will be thrown if the file is not readable
Reads the file content and loads in $_ENV
, $_SERVER
et getenv()
, values of each variable
$oDotenv->load();
For each new line found, tries to set to the name of the variable its value after the =
sign
TEST_VALUE1=value1 => $_ENV['TEST_VALUE1'] = value1
If the value is a primitive value, the value will be casted to the PHP
userland
NAME=1 => $_ENV['NAME'] = 1 NAME=23.34 => $_ENV['NAME'] = 23.34 (float values will be casted only with a dot .) NAME=true => $_ENV['NAME'] = true NAME=false => $_ENV['NAME'] = false NAME=string value => $_ENV['NAME'] = 'string value'
Multiline variables are also available ! (separated by \n
), double quotes ("
) will be used
NAME="This is a variable
with
multiple
lines"
Nested variables, declared beforehand via the same file or getenv()
(set via the OS or docker for example)
NESTED=VALUE NAME=${NESTED} NAME2=${NESTED}/path $_ENV['NESTED'] = 'VALUE' $_ENV['NAME'] = 'VALUE' $_ENV['NAME2'] = 'VALUE/path'
Throw an RayanLevert\Dotenv\Exception
if at least one variable is not present in the $_ENV
superglobal
$oDotenv->required('FIRST_REQUIRED', 'SECOND_REQUIRED');
Worth if we want required variables for application purposes, an exception will be thrown to prevent some logic error