Загрузчик .env для PHP 8.1+: разбор с интерполяцией переменных, приведение типов, адаптеры записи (putenv / $_ENV / $_SERVER), фильтры ключей и валидация обязательных значений. Нулевые внешние зависимости.

Maintainers

Package info

gitverse.ru/cloud-castle/env

Homepage

Issues

Documentation

pkg:composer/cloud-castle/env

Transparency log

Statistics

Installs: 12

Dependents: 0

Suggesters: 0

v1.1.3 2026-07-29 08:35 UTC

This package is auto-updated.

Last update: 2026-07-29 20:01:48 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Env

CloudCastle Env

Packagist Version Downloads PHP Version License

Загрузка и типизированный доступ к переменным окружения для PHP 8.1+. Совместимый с .env разбор (кавычки, комментарии, интерполяция ${VAR}), типизированные геттеры, валидация, фильтры, иммутабельное хранилище. Нулевые внешние зависимости.

Установка

composer require cloud-castle/env

Требуется PHP 8.1+.

Быстрый старт

<?php

use CloudCastle\Env\Dotenv;
use CloudCastle\Env\Env;

// Загрузка .env (иммутабельно: существующее окружение не перезаписывается).
Dotenv::createImmutable('/path/to/.env')->load();

// Типизированный доступ — без ручного приведения строк.
$debug   = Env::getBool('APP_DEBUG', false);
$port    = Env::getInt('DB_PORT', 5432);
$ratio   = Env::getFloat('RATIO', 1.0);
$flags   = Env::getList('FEATURE_FLAGS');        // ['a','b','c']
$name    = Env::getString('APP_NAME', 'app');

// Валидация обязательных переменных на старте приложения.
Dotenv::createImmutable('/path/to/.env')
    ->required(['APP_KEY', 'DB_HOST'])
    ->notEmpty()
    ->assert();

Dotenv::createImmutable('/path/to/.env')
    ->required('DB_PORT')
    ->isInteger()
    ->assert();

Возможности

  • Совместимый разбор .env: пары, одинарные/двойные кавычки, экранирование, комментарии, пустые значения, интерполяция ${VAR} — результат совпадает с vlucas/phpdotenv, symfony/dotenv и josegonzalez/dotenv (см. интероп-тесты).
  • Типизированные геттеры: getString, getInt, getFloat, getBool, getList — вместо ручного приведения строковых значений.
  • Валидация: required / ifPresent + notEmpty, isInteger, isFloat, isBoolean, allowedValues, allowedRegexValues.
  • Три режима хранилища: иммутабельный, мутабельный и array-backed (изолированное хранилище в памяти, не трогающее $_ENV/putenv).
  • Фильтры: произвольная пост-обработка загруженных значений.
  • Безопасность: иммутабельный режим по умолчанию защищает от случайной перезаписи окружения; никакие ПД/секреты не логируются.

Сравнение с аналогами

Все таблицы ниже сгенерированы автоматически из честных сравнительных тестов (benchmarks/compare.php) на ОДИНАКОВОЙ операции для всех аналогов, PHP 8.1.34, без Xdebug.

1. Функциональность

Возможность🏆 CloudCastlesymfonyvlucasm1/envjosegonzalezdevcoderini¹
Приведение к нативным типам (bool/int/float/null)
Схемная валидация переменных (типы + обязательность)
Интерполяция ${VAR} со вложенностью
Множественная загрузка файлов с приоритетом
Нулевые внешние runtime-зависимости
Всего🏆 5333321

2. Безопасность и корректность

Свойство🏆 CloudCastlesymfonyvlucasm1/envjosegonzalezdevcoderini¹
Изоляция от глобального состояния по умолчанию (без записи в $_ENV/putenv)
Типизированное исключение при синтаксической ошибке
Безопасная интерполяция (только объявленные переменные, без eval)
Иммутабельность репозитория загруженных значений
Нулевые внешние runtime-зависимости (меньше поверхность атаки)
Всего🏆 5344412

3. Производительность

Разбор .env (12 переменных), 100 000 раз (минимум из 4).

РешениеВремя (мс)Итог
ini¹240,8базовый уровень (не библиотека)
🏆 CloudCastle988,7быстрейшее среди библиотек
devcoder2 201,3аналог
m1/env3 723,7аналог
symfony3 986,9аналог
josegonzalez5 135,1аналог
vlucas10 699,3аналог

4. Потребление памяти

Пик памяти на 100 000 разборов (изолированный процесс, только целевая библиотека).

РешениеПиковая память (KB)Итог
🏆 CloudCastle6 977легчайшее среди библиотек
symfony6 977аналог
vlucas6 977аналог
devcoder6 978аналог
ini¹6 978базовый уровень (не библиотека)
josegonzalez9 638аналог
m1/env10 173аналог

¹ Базовый уровень (нативные вызовы/примитивы без полноты решения) показан для контекста и не претендует на победу среди библиотек-аналогов.

Вывод: CloudCastle Env — самый быстрый среди библиотек и самый лёгкий по памяти, единственный объединяющий совместимый разбор, типизированные геттеры, схемную валидацию и фильтры при нулевых внешних зависимостях.

Разработка

composer install
composer check    # линтеры + статический анализ + тесты
composer fix      # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci       # полный CI-пайплайн локально

Полный список команд с описаниями: composer run-script --list.

Документация

Лицензия

MIT © CloudCastle (alex-4-17@yandex.ru)

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano