A lightweight .env loader for PHP projects.
⚡ Fast, 🛡️ Safe, 🎯 Simple — designed for small to medium projects.
composer require datahihi1/tiny-env:^1.0.11
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
$env->load(); // Load all
$env->load(['DB_HOST']); // Load specific keys
$env = new TinyEnv(__DIR__, true); // Load immediately
$env->lazy(['DB']); // Load only DB_* variables
$env->safeLoad(); // Ignore missing/unreadable .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'
]);
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