PHP code example of enjoys / dotenv

1. Go to this page and download the library: Download enjoys/dotenv library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

enjoys / dotenv example snippets

 
composer 

use Enjoys\Dotenv\Dotenv;
 
# loaded line __DIR__.'/.env.dist -> __DIR__.'/.env' -> __DIR__.'/.env.<APP_ENV> (repeat.env.<APP_ENV> if redefined) 
$dotenv = new Dotenv(__DIR__.'/.env'); 
// config available in $_ENV
$dotenv->loadEnv(); 

# config available in $_ENV and getenv()
# $dotenv->loadEnv(true); 

use Enjoys\Dotenv\Dotenv;
$dotenv = new  Dotenv(__DIR__.'/.env');
$dotenv->enableCastType();
$dotenv->loadEnv();

use \Enjoys\Dotenv\Dotenv;
$dotenv = new Dotenv(__DIR__.'/.env', flags: Dotenv::CAST_TYPE_ENV_VALUE);
$dotenv->loadEnv();

// Несогласованное поведение (опасно!):
$debugFromEnv = $_ENV['DEBUG'];    // bool(true) - если включен CAST_TYPE_ENV_VALUE
$debugFromGetenv = getenv('DEBUG'); // string('true') - всегда строка!

// Предсказуемое поведение с функцией env() (рекомендуется):
$debug1 = env('DEBUG', false);      // Всегда bool(false), если переменной нет
$debug2 = env('DEBUG', '*true');    // Всегда bool(true), если переменной нет
$debug3 = env('DEBUG');             // Значение будет приведено к типу корректно

// Получение значения переменной окружения (вернет localhost если переменная не существует)
$dbHost = env('DB_HOST', 'localhost');

// Без значения по умолчанию (вернет null если переменная не существует)
$dbPort = env('DB_PORT');

// Булевы значения
env('DEBUG', '*true');        // → bool(true)
env('DEBUG', '*false');       // → bool(false)
env('FLAG', '*bool');         // → bool(false)

// Числовые значения
env('PORT', '*int 8080');     // → int(8080)
env('PRICE', '*float 99,99'); // → float(99.99)
env('RATE', '*double 3.14');  // → float(3.14)

// Строки и null
env('NAME', '*string John');  // → string("John")
env('OPTIONAL', '*null');     // → null

// Булевы значения
env('DEBUG', 'true');    // → bool(true)
env('DEBUG', 'false');   // → bool(false)

// Числовые значения  
env('PORT', '8080');     // → int(8080)
env('PRICE', '99.99');   // → float(99.99)
env('PRICE', '99,99');   // → float(99.99) - запятые автоматически заменяются

// Строки и null
env('NAME', 'John Doe'); // → string("John Doe")
env('OPTIONAL', 'null');     // → null

// Простое преобразование типов
$port = env('DB_PORT', 3306, fn($v) => (int) $v);
$debug = env('APP_DEBUG', false, fn($v) => (bool) $v);

// Комплексное преобразование
$allowedHosts = env('ALLOWED_HOSTS', 'localhost,127.0.0.1', function($v) {
    return array_filter(array_map('trim', explode(',', $v)));
});

// Использование встроенных функций PHP
$env = env('APP_ENV', 'prod', 'strtoupper');
$name = env('APP_NAME', 'My App', 'trim');

// Преобразование + валидация в одном callback
$port = env('PORT', 8080, function($value) {
    $value = (int) $value;
    if ($value < 1 || $value > 65535) {
        throw new InvalidArgumentException("Port must be between 1 and 65535");
    }
    return $value;
});

// Массив хостов с валидацией
$allowedHosts = env('ALLOWED_HOSTS', 'localhost', function($value) {
    $hosts = array_filter(array_map('trim', explode(',', $value)));
    if (empty($hosts)) {
        throw new InvalidArgumentException("At least one host 

// Используйте callback, который возвращает значение как есть
$rawValue = env('SOME_VAR', null, fn($v) => $v);

return [
    'debug' => env('APP_DEBUG', false, fn($v) => (bool) $v),
    'env' => env('APP_ENV', 'production', 'strtolower'),
    'name' => env('APP_NAME', 'My App', 'trim'),
    
    'database' => [
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', 3306, function($v) {
            $port = (int) $v;
            if ($port <= 0) {throw new InvalidArgumentException("DB port must be positive");}
            return $port;
        }),
        'name' => env('DB_NAME', 'app'),
        'user' => env('DB_USER', 'root'),
        'pass' => env('DB_PASS', '', function($v) {
            if (empty($v)) {throw new InvalidArgumentException("DB password is 

// Если установлено и в getenv() и в $_ENV - используется getenv()
putenv('TEST_VAR=system_value');
$_ENV['TEST_VAR'] = 'env_value';

env('TEST_VAR'); // → "system_value"