darlanschmeller / php-env-loader
Lightweight .env file loader for PHP with automatic type casting
v2.0.2
2026-01-30 13:33 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^11
README
A lightweight, object-oriented PHP library to load .env files into $_ENV with automatic type casting and quote handling. Perfect for small projects, scripts, or when you want a simple alternative to vlucas/phpdotenv.
Features
- Load
.envfiles into$_ENVautomatically - Supports
exportkeyword - Inline comment handling (
# comment) - Quote string handling (
"string"or'string') - Automatic type casting:
"true"/"false"→bool- Numeric strings →
intorfloat "null"→null
- Static helper method for convenience
- Comprehensive PHPUnit test coverage
Installation
Via Composer (recommended)
composer require darlanschmeller/php-env-loader
Include in your project:
require __DIR__ . '/vendor/autoload.php'; use DarlanSchmeller\EnvLoader\EnvLoader;
From source (for development only)
git clone https://github.com/DarlanSchmeller/php-env-loader.git
Include in your project:
require __DIR__ . '/src/EnvLoader.php'; use DarlanSchmeller\EnvLoader\EnvLoader;
Usage
Basic Usage
$env = new EnvLoader(); // Defaults to '../.env' $variables = $env->load(); var_dump($variables); // Loaded env variables var_dump($_ENV); // Also accessible globally
Static Convenience
If you just want to load a .env without instantiating the class:
$variables = EnvLoader::loadFrom(__DIR__ . '/.env');
Sample .env
DB_HOST=127.0.0.1 DB_PORT=3306 DB_USER=root DB_PASSWORD="supersecret" APP_DEBUG=true TIMEOUT=5.5
After loading
$_ENV['DB_PORT']; // int(3306) $_ENV['DB_PASSWORD']; // string("supersecret") $_ENV['APP_DEBUG']; // bool(true) $_ENV['TIMEOUT']; // float(5.5)
Note
- Inline comments are supported outside quotes, e.g.,
DB_HOST=127.0.0.1 # main database host - Quotes around values are stripped automatically
- Empty strings and "null" values are converted to null
Running Automated Tests
Run all PHPUnit tests for this library:
./vendor/bin/phpunit tests