-
-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
.env файл ──▶ EnvParser ──▶ [фильтры] ──▶ Repository ──▶ адаптеры ($_ENV/$_SERVER/putenv/array)
│ ▲
интерполяция ${VAR} чтение через фасад Env
│
TypeCaster (bool/int/float/null)
-
EnvParserразбирает синтаксис.env: кавычки,export, комментарии, многострочные значения, интерполяция${VAR}/$VAR. -
Фильтры (
FilterInterface) преобразуют имена переменных. -
Repositoryпишет значения в набор адаптеров с учётом иммутабельности. -
Env(статический фасад) читает значения, приводя типы черезTypeCaster. -
Validatorпроверяет присутствие и формат обязательных переменных.
Пакет использует PSR-4 namespace CloudCastle\Env\ (каталог src/) с подслоями:
-
CloudCastle\Env\Contract\— интерфейсы:ParserInterface,RepositoryInterface,AdapterInterface,FilterInterface; -
CloudCastle\Env\Exception\— исключения:InvalidFileException,InvalidValueException,ValidationException(все реализуютEnvExceptionInterface); -
CloudCastle\Env\Repository\—Repositoryи адаптеры вRepository\Adapter\; -
CloudCastle\Env\Filter\— фильтры имён переменных; -
CloudCastle\Env\…— фасадEnv,Dotenv,EnvParser,TypeCaster,Validator.
Архитектурные границы проверяются Deptrac: реализация зависит от
Contract/Exception, но не наоборот.
- Zero-dependency. Пакет не имеет runtime-зависимостей — только PHP 8.1+.
-
Адаптеры-источники. Один
Repositoryобъединяет$_ENV,$_SERVER,putenvи массив в памяти; чтение — из первого попавшегося, запись — во все. -
Иммутабельность по умолчанию. Загрузка
.envне перезаписывает системное окружение. -
Обратимое приведение типов.
007,3.0,1e5остаются строками, чтобы не терять данные при round-trip. -
Разбор до снятия экранирования. Интерполяция применяется до
unescape, поэтому\$не подставляется, а становится литеральным$.
CloudCastle\Env\Tests\ (каталог tests/) разделён на наборы: Unit, Integration,
Security, Load, Performance.
- Строгая типизация,
declare(strict_types=1)в каждом файле. - Ноль runtime-зависимостей.
- Публичный API документирован PHPDoc на русском.
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)