-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Type Casting
github-actions[bot] edited this page Jul 15, 2026
·
1 revision
Переменные окружения — всегда строки; типизатор приводит их к bool/int/float/null
и даёт типизированные геттеры с обратимостью, чтобы не терять данные.
TypeCaster распознаёт булевы литералы (true/false/yes/no/on/off), null
(null/(null)), целые и дробные числа. Фасад Env даёт как авто-приведение
(get), так и явные геттеры.
Env::get('APP_DEBUG'); // bool(true) — из "true"/"yes"/"on"
Env::get('DB_PORT'); // int(5432)
Env::get('RATE'); // float(0.75)
Env::get('OPTIONAL'); // null
Env::getBool('APP_DEBUG');
Env::getInt('DB_PORT', 5432);
Env::getFloat('RATE');
Env::getList('HOSTS'); // "a,b,c" → ['a','b','c']
Env::getString('NAME'); // без приведенияЗначение считается целым, только если совпадает со своей же канонической записью
после (int). Это отсекает потерю данных:
| Вход | Env::get() |
Почему |
|---|---|---|
42 |
int(42) |
канонично |
007 |
string("007") |
ведущий ноль потерялся бы |
+5 |
string("+5") |
знак + потерялся бы |
3.0 |
string("3.0") |
дробная запись потерялась бы |
1e5 |
string("1e5") |
экспонента потерялась бы |
9223372036854775808 |
string(...) |
переполнение int
|
- Единая семантика авто-приведения и явных геттеров.
- Обратимость защищает идентификаторы, коды, версии от порчи.
-
getInt/getFloatпринудительно приводят, когда нужно именно число.
- Авто-
get()возвращаетbool|int|float|string|null— для строгой типизации на месте используйте явные геттеры.
- Явный геттер с значением по умолчанию для конфигурации известного типа:
Env::getInt('WORKERS', 4).
- Сравнивать
Env::get('FLAG') === 'true'— авто-приведение уже вернётbool. ИспользуйтеEnv::getBool('FLAG').
flowchart TD
S["строка"] --> N{"null-литерал?"}
N -->|да| NUL[null]
N -->|нет| B{"булев литерал?"}
B -->|да| BOOL[bool]
B -->|нет| I{"обратимый int?"}
I -->|да| INT[int]
I -->|нет| FL{"обратимый float?"}
FL -->|да| FLOAT[float]
FL -->|нет| STR[string]
| Возможность | Env | vlucas | symfony | josegonzalez | m1 | devcoder | 🏆 Победитель |
|---|---|---|---|---|---|---|---|
Авто-cast bool/int/float/null
|
✅ | ❌ | ❌ | ❌ | ❌ | ✅ | Env, devcoder |
| Обратимость (007/3.0/1e5) | ✅ | — | — | — | — | Env | |
| Типизированные геттеры | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Env |
CloudCastle Env · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)