-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Validation
github-actions[bot] edited this page Jul 16, 2026
·
1 revision
Текучая проверка присутствия и формата обязательных переменных с агрегацией всех ошибок в одно исключение — fail-fast при старте приложения.
Validator (через Env::required() или Dotenv::required()/ifPresent()) проверяет
набор имён. Каждый метод проверяет все переменные набора и при нарушениях бросает
ValidationException со списком всех проблем сразу.
Env::required(['APP_KEY', 'DB_HOST'])->notEmpty();
Env::required('DB_PORT')->isInteger();
Env::required('APP_ENV')->allowedValues(['dev', 'staging', 'prod']);
Env::required('LOG_LEVEL')->allowedRegexValues('/^(debug|info|warning|error)$/');| Метод | Условие |
|---|---|
assert() |
переменная задана |
notEmpty() |
значение не пустое (после trim) |
isInteger() |
целое число |
isFloat() |
дробное или целое |
isBoolean() |
булев литерал (регистр не важен) |
allowedValues([...]) |
входит в список |
allowedRegexValues('/…/') |
соответствует шаблону |
- Все ошибки собираются и сообщаются разом — не по одной за прогон.
- Текучая цепочка:
->notEmpty()->isInteger(). -
ifPresent()проверяет только заданные переменные (необязательные настройки).
- Каждый метод применяется ко всему набору имён; для разных правил на разные переменные
создавайте отдельные цепочки
required().
- Валидировать конфигурацию один раз при старте приложения (fail-fast), до подключений к БД/внешним сервисам.
- Смешивать несовместимые правила в одной цепочке:
Env::required('PORT')->isInteger()->isBoolean()—'5'не булев, бросит.
flowchart LR
N["набор имён"] --> C{"для каждого имени"}
C -->|"не задана"| E1["ошибка: обязательна"]
C -->|"предикат провален"| E2["ошибка: формат"]
C -->|"ок"| OK["продолжить цепочку"]
E1 --> AGG["агрегировать все ошибки"]
E2 --> AGG
AGG --> EX[ValidationException]
sequenceDiagram
participant A as Приложение
participant V as Validator
A->>V: required([...])->notEmpty()->isInteger()
V->>V: проверить все имена, собрать ошибки
alt ошибки есть
V-->>A: throw ValidationException (список)
else
V-->>A: $this (цепочка продолжается)
end
| Возможность | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
| Обязательные переменные | ✅ | ✅ | ✅ | ❌ | ❌ | Паритет | |
isInteger/isBoolean/isFloat |
✅ | ✅ | ❌ | ❌ | ❌ | Env, vlucas | |
allowedValues/regex |
✅ | ✅ | ❌ | ❌ | ❌ | ❌ | Env, vlucas |
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)