Search by

datahihi1 / tiny-env

datahihi1

A simple environment variable loader for PHP applications

Package info

github.com/datahihi1/tiny-env

pkg:composer/datahihi1/tiny-env

Statistics

Installs: 490

Dependents: 2

Suggesters: 0

Stars: 2

Open Issues: 0

1.2.0 2026-11-08 03:34 UTC

README

A lightweight .env loader for PHP projects.

Fast, Safe, Simple — designed for small to medium projects.

Installation

composer require datahihi1/tiny-env:1.2.0

Quick Start

require 'vendor/autoload.php';

use Datahihi1\TinyEnv\TinyEnv;

$env = new TinyEnv(__DIR__);
$env->load();

echo env('DB_HOST', 'localhost');

.env file:

DB_HOST=127.0.0.1
DB_PORT=3306

Features

1. load() – Standard load

$env->load();                           // Load all
$env->load(specificKeys: ['DB_HOST']);  // Load specific keys
$env->load([], forceReload: true);      // Force reload (overwrite existing values)
$env->load([], noFile: true);           // Load without requiring .env file to exist

2. Fast load

$env = new TinyEnv(__DIR__, true); // Load immediately from .env without populating superglobals unless you opt in

3. Multiple .env files

$env->envfiles(['.env', '.env.production', '.env.local']); // Load in order, pre-declaration file has the highest priority by default (.env > .env.production > .env.local)
$env->envfiles(['.env.production', '.env.local'], prioritizeEnv: true); // Prioritize .env file by loading it first, allows overwriting other files

Populate Superglobals

$env = new TinyEnv(__DIR__); // By default, superglobals are NOT populated to avoid unintended side effects. Enable them explicitly:
$env->populateSuperglobals(); // Enable $_ENV population
$env->populateServerglobals(); // Enable $_SERVER population
$env->populateProcessEnv(); // Enable putenv()/getenv() population
$env->load();

fastLoad only performs the initial load immediately; it does not populate $_ENV, $_SERVER, or the process environment unless you opt in explicitly.

  • Getting Values
echo env('NAME');                // Get value
echo env('NOT_FOUND', 'backup'); // With default
print_r(env());                  // Get all (in .env file)
print_r(sysenv());               // Get all system variables
  • Validation

Using tiny-env-validator

  • Encryption

Using tiny-env-encryptor

Variable Interpolation

TinyEnv supports shell-style interpolation inside .env values:

DB_HOST=localhost
DB_PORT=3306
DB_URL=${DB_HOST}:${DB_PORT}

USER_NAME=
USER=${USER_NAME:-guest}   # default if unset or empty
ALT_USER=${USER_NAME-guest} # default if unset only
REQUIRED=${MISSING?Missing variable MISSING}

Result:

DB_URL="localhost:3306"

USER="guest" (because USER_NAME is empty)

ALT_USER="" (because USER_NAME exists but empty)

REQUIRED → throws Exception

Notes

  • Comments start with #.
  • Variable names: A-Z, 0-9, _.
  • Spaces around = still valid but not recommended.
  • Values are auto-parsed into correct types:
    • "true", "yes", "on" → true
    • "false", "no", "off" → false
    • "123" → int
    • "12.3" → float or double
    • "null" or empty → null
  • TinyEnv considers yes/no, on/off to be boolean values.
  • Use "/value/" to force string type.