Skip to content

Quick start

github-actions[bot] edited this page Jul 15, 2026 · 1 revision

Быстрый старт

Установка

composer require cloudcastle/env

Требуется PHP 8.1+. Runtime-зависимостей нет.

Загрузка .env

<?php

declare(strict_types=1);

use CloudCastle\Env\Env;

// Иммутабельно: уже заданные переменные окружения не перезаписываются
Env::load(__DIR__ . '/.env');

// Молча пропустить отсутствующий файл
Env::safeLoad(__DIR__ . '/.env.local');

Типизированное чтение

Переменные окружения — всегда строки; типизатор приводит их к нужному типу:

$debug = Env::getBool('APP_DEBUG');        // "true"/"yes"/"on"/"1" → true
$port  = Env::getInt('DB_PORT', 5432);     // значение по умолчанию, если не задано
$rate  = Env::getFloat('RATE_LIMIT');      // "0.75" → 0.75
$hosts = Env::getList('TRUSTED_HOSTS');    // "a.local,b.local" → ['a.local', 'b.local']
$name  = Env::getString('APP_NAME');       // сырая строка без приведения

Авто-приведение возвращает наиболее подходящий тип:

Env::get('APP_DEBUG');       // bool(true)
Env::get('DB_PORT');         // int(5432)
Env::get('RATE_LIMIT');      // float(0.75)
Env::get('OPTIONAL');        // null (для литералов "null"/"(null)")
Env::get('MISSING', 'def');  // 'def' — значение по умолчанию

Приведение обратимо: 007, 3.0, 1e5 остаются строками, чтобы не терять данные.

Проверка обязательных переменных

Env::required(['APP_KEY', 'DB_HOST'])->notEmpty();
Env::required('DB_PORT')->isInteger();
Env::required('APP_ENV')->allowedValues(['dev', 'staging', 'prod']);

При нарушении бросается ValidationException со списком всех проблем сразу.

Изолированная загрузка (например, в тестах)

use CloudCastle\Env\Dotenv;

// Не трогает $_ENV/$_SERVER/putenv — только возвращает массив
$vars = Dotenv::createArrayBacked(__DIR__ . '/.env')->load();

Дальше

Clone this wiki locally