-
-
Notifications
You must be signed in to change notification settings - Fork 0
Comparison
Сравнение CloudCastle Env с пятью популярными dotenv-пакетами:
-
vlucas/phpdotenv— де-факто стандарт, богатый разбор и валидация; -
symfony/dotenv— компонент Symfony, zero-dependency; -
josegonzalez/dotenv— фильтры иexpect; -
m1/env— лёгкий парсер; -
devcoder-xyz/php-dotenv— типизация через процессоры.
Ни один аналог не покрывает всё сразу: Env объединяет разбор, интерполяцию, приведение
типов, валидацию и фильтры в едином zero-dependency API. Таблица ниже честно отражает и
сильные стороны конкурентов (у josegonzalez — фильтры, у devcoder — типизация, у
vlucas — валидация). Таблица возможностей генерируется из tools/features-data.php
(composer docs:features), бенчмарки — из composer compare (composer docs:comparison).
Сгенерировано из tools/features-data.php (факты о поддержке). Легенда: ✅ полностью ·
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
Комментарии # и пустые строки |
✅ | ✅ | ✅ | ✅ | ✅ | Паритет | |
Префикс export |
✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Паритет |
| Двойные кавычки с экранированием | ✅ | ✅ | ✅ | ✅ | ✅ | Паритет | |
| Одинарные кавычки (литерал) | ✅ | ✅ | ✅ | ✅ | ✅ | Паритет | |
| Многострочные значения в кавычках | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Env, vlucas, symfony |
Инлайн-комментарии VAR=val # … |
✅ | ✅ | ✅ | ✅ | ❌ | Паритет | |
Интерполяция ${VAR} / $VAR |
✅ | ✅ | ✅ | ❌ | Env, vlucas, symfony | ||
Экранирование \$ (без подстановки) |
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Env, vlucas, symfony |
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
Авто-cast bool/int/float/null |
✅ | ❌ | ❌ | ❌ | ❌ | ✅ | Env, devcoder |
| Обратимость (007/3.0/1e5 → строка) | ✅ | — | — | — | — | Env | |
Типизированные геттеры getInt/getBool/getList |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Env |
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
Адаптеры $_ENV / $_SERVER / putenv |
✅ | ✅ | 🔌 | ❌ | Env, vlucas | ||
| Иммутабельность (не перезаписывать) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | Паритет |
| Изолированное хранилище в памяти | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | Паритет |
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
Обязательные переменные (required) |
✅ | ✅ | ✅ | ❌ | ❌ | Паритет | |
Проверки isInteger/isBoolean/isFloat |
✅ | ✅ | ❌ | ❌ | ❌ | Env, vlucas | |
allowedValues / регулярные выражения |
✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Env, vlucas |
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Префикс / регистр / переименование ключей | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | Env, josegonzalez |
Произвольный callable-фильтр |
✅ | ❌ | ❌ | ✅ | ❌ | ❌ | Env, josegonzalez |
| Функция | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Runtime-зависимости (0 — лучше) | ✅ | ❌ | ✅ | ✅ | ✅ | Env, symfony, m1, devcoder | |
| Единый API: разбор + типы + валидация + фильтры | ✅ | ❌ | ❌ | ❌ | Env |
Сгенерировано из composer compare (PHP 8.2.32). Правки в блоке будут перезаписаны.
| Сценарий | cloudcastle/env | devcoder-xyz/php-dotenv | m1/env | josegonzalez/dotenv | symfony/dotenv | vlucas/phpdotenv |
|---|---|---|---|---|---|---|
| Разбор типового .env (20000 итераций) | 67474 ops/s | 34975 ops/s | 18462 ops/s | 14094 ops/s | 13747 ops/s | 6064 ops/s |
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)