-
-
Notifications
You must be signed in to change notification settings - Fork 0
Quick start
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
composer require cloudcastle/envТребуется PHP 8.1+. Runtime-зависимостей нет.
<?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();- Конфигурация — адаптеры, иммутабельность, фильтры
- Примеры — интерполяция, каскад файлов, кастомные фильтры
- Архитектура
- Сравнение с аналогами
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)