darlanschmeller/php-env-loader

Lightweight .env file loader for PHP with automatic type casting

Maintainers

Package info

github.com/DarlanSchmeller/php-env-loader

pkg:composer/darlanschmeller/php-env-loader

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 13

Open Issues: 0

v2.0.2 2026-01-30 13:33 UTC

This package is auto-updated.

Last update: 2026-03-29 01:14:10 UTC


README

PHP Packagist License PHP Composer CI

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 .env files into $_ENV automatically
  • Supports export keyword
  • Inline comment handling (# comment)
  • Quote string handling ("string" or 'string')
  • Automatic type casting:
    • "true" / "false"bool
    • Numeric strings → int or float
    • "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