-
-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
Repository объединяет несколько адаптеров-источников. Чтение идёт из первого
адаптера, где переменная найдена; запись — во все адаптеры сразу.
| Адаптер | Источник | Влияет на дочерние процессы |
|---|---|---|
EnvConstAdapter |
$_ENV |
нет |
ServerConstAdapter |
$_SERVER |
нет |
PutenvAdapter |
getenv/putenv
|
да (proc_open, exec) |
ArrayAdapter |
массив в памяти | нет |
use CloudCastle\Env\Repository\Repository;
use CloudCastle\Env\Repository\Adapter\ArrayAdapter;
// Хранилище по умолчанию: $_ENV + $_SERVER + putenv, иммутабельное
$repository = Repository::default(immutable: true);
// Изолированное хранилище в памяти (для тестов)
$isolated = Repository::inMemory();
// Произвольный набор адаптеров
$custom = new Repository([new ArrayAdapter(['APP_ENV' => 'prod'])], immutable: false);По умолчанию хранилище иммутабельно: уже заданные переменные не перезаписываются
при загрузке .env. Это защищает системное окружение от подмены из файла.
use CloudCastle\Env\Dotenv;
Dotenv::createImmutable(__DIR__ . '/.env')->load(); // не перезапишет существующие
Dotenv::createMutable(__DIR__ . '/.env')->load(); // перезапишет (overload)Через фасад:
Env::load($path); // иммутабельно
Env::overload($path); // мутабельно, поверх окруженияФильтры преобразуют имена переменных после разбора, до записи в хранилище.
use CloudCastle\Env\Dotenv;
use CloudCastle\Env\EnvParser;
use CloudCastle\Env\Repository\Repository;
use CloudCastle\Env\Filter\PrefixFilter;
use CloudCastle\Env\Filter\LowercaseKeyFilter;
$dotenv = new Dotenv(
Repository::inMemory(),
new EnvParser(),
[__DIR__ . '/.env'],
[new PrefixFilter('APP_'), new LowercaseKeyFilter()],
);Встроенные фильтры: PrefixFilter, LowercaseKeyFilter, UppercaseKeyFilter,
RemapKeysFilter, CallableFilter. Свой фильтр — реализация FilterInterface.
use CloudCastle\Env\Env;
use CloudCastle\Env\Repository\Repository;
use CloudCastle\Env\Repository\Adapter\ArrayAdapter;
Env::setRepository(new Repository([new ArrayAdapter(['DB_PORT' => '5432'])], false));
// ... тест ...
Env::reset(); // вернуть хранилище по умолчанию
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)