-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Filters
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Преобразование имён переменных после разбора: префикс, регистр, переименование по
карте и произвольный callable — изоляция переменных в своём пространстве имён.
Фильтры (FilterInterface) применяются загрузчиком к разобранному массиву по порядку,
до записи в хранилище; результат одного фильтра передаётся следующему.
| Фильтр | Действие |
|---|---|
PrefixFilter |
добавляет префикс к именам |
LowercaseKeyFilter |
имена к нижнему регистру |
UppercaseKeyFilter |
имена к верхнему регистру |
RemapKeysFilter |
переименовывает по карте соответствий |
CallableFilter |
произвольное преобразование функцией |
use CloudCastle\Env\Dotenv;
use CloudCastle\Env\EnvParser;
use CloudCastle\Env\Repository\Repository;
use CloudCastle\Env\Filter\PrefixFilter;
use CloudCastle\Env\Filter\RemapKeysFilter;
new Dotenv(Repository::inMemory(), new EnvParser(), [__DIR__ . '/redis.env'], [
new RemapKeysFilter(['HOST' => 'SERVER']),
new PrefixFilter('REDIS_'),
]);- Изоляция переменных одного файла в своём пространстве имён (
PrefixFilter). - Приведение к единому регистру при работе с разными источниками.
-
CallableFilter— любая логика, включая отбор подмножества переменных.
- Фильтры меняют только имена, не значения; для преобразования значений — приведение типов при чтении.
- Группировать переменные подсистемы префиксом, чтобы избежать коллизий:
new PrefixFilter('DB_').
- Переименовывать так, чтобы два разных имени схлопнулись в одно — последнее значение перезапишет предыдущее без предупреждения.
flowchart LR
P["разобранные переменные"] --> F1[RemapKeysFilter]
F1 --> F2[PrefixFilter]
F2 --> F3[LowercaseKeyFilter]
F3 --> R["в хранилище"]
sequenceDiagram
participant D as Dotenv
participant F as цепочка фильтров
participant R as Repository
D->>D: parse(content) → массив
loop по фильтрам
D->>F: apply(массив)
F-->>D: преобразованный массив
end
D->>R: записать переменные
| Возможность | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Префикс/регистр/переименование | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | Env, josegonzalez |
Произвольный callable-фильтр |
✅ | ❌ | ❌ | ✅ | ❌ | ❌ | Env, josegonzalez |
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)