datahihi1/tiny-env

A simple environment variable loader for PHP applications

1.0.11 2025-09-08 12:52 UTC

This package is auto-updated.

Last update: 2025-09-10 14:11:28 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.0.11

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(['DB_HOST']);   // Load specific keys

2. Fast load

$env = new TinyEnv(__DIR__, true); // Load immediately

3. Lazy load

$env->lazy(['DB']); // Load only DB_* variables

4. Safe load

$env->safeLoad(); // Ignore missing/unreadable .env files

5. Multiple .env files

$env->envfiles(['.env', '.env.local', '.env.production']);
  • 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
validate_env([
  'VERSION' => 'required|string',
  'DB_PORT' => 'int',
  'APP_DEBUG' => 'bool'
]);

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, _.
  • Values are auto-parsed into correct types:
    • "true"true
    • "false"false
    • "123"int
    • "12.3"float
    • "null" or empty → null