-
-
Notifications
You must be signed in to change notification settings - Fork 0
Examples
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Практические сценарии использования cloudcastle/env.
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=app
DB_NAME=main
DATABASE_URL=postgres://${DB_USER}@${DB_HOST}:${DB_PORT}/${DB_NAME}use CloudCastle\Env\Env;
Env::load(__DIR__ . '/.env');
Env::getString('DATABASE_URL'); // postgres://app@127.0.0.1:5432/mainОдинарные кавычки отключают интерполяцию, \$ вставляет литеральный доллар:
LITERAL='no ${INTERP} here'
PRICE="\$5.00"use CloudCastle\Env\Dotenv;
use CloudCastle\Env\EnvParser;
use CloudCastle\Env\Repository\Repository;
use CloudCastle\Env\Repository\Adapter\ArrayAdapter;
$repository = new Repository([new ArrayAdapter()], immutable: false);
// .env.local перекрывает .env (мутабельное хранилище)
(new Dotenv($repository, new EnvParser(), [
__DIR__ . '/.env',
__DIR__ . '/.env.local',
]))->load();Для иммутабельного каскада порядок обратный: первым грузится приоритетный источник (например, секреты), и он не перезаписывается более общими значениями.
use CloudCastle\Env\Filter\CallableFilter;
// Оставить только переменные с префиксом FEATURE_
$onlyFeatures = new CallableFilter(
static fn (array $vars): array => array_filter(
$vars,
static fn (string $name): bool => str_starts_with($name, 'FEATURE_'),
ARRAY_FILTER_USE_KEY,
),
);use CloudCastle\Env\Env;
Env::load(__DIR__ . '/.env');
Env::required(['APP_KEY', 'DB_HOST', 'DB_PORT'])->notEmpty();
Env::required('DB_PORT')->isInteger();
Env::required('APP_ENV')->allowedValues(['dev', 'staging', 'prod']);
Env::required('LOG_LEVEL')->allowedRegexValues('/^(debug|info|warning|error)$/');
// Любое нарушение — ValidationException со списком всех проблем сразуuse CloudCastle\Env\Dotenv;
$dotenv = Dotenv::createImmutable(__DIR__ . '/.env');
$dotenv->load();
// Проверить формат только тех, что заданы (необязательные)
$dotenv->ifPresent(['SENTRY_DSN', 'REDIS_URL'])->notEmpty();TRUSTED_PROXIES=10.0.0.1,10.0.0.2,10.0.0.3$proxies = Env::getList('TRUSTED_PROXIES'); // ['10.0.0.1', '10.0.0.2', '10.0.0.3']
$flags = Env::getList('FEATURE_FLAGS', [], '|'); // произвольный разделитель
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)