Конфигурация
Конфигурация Winter живёт в двух местах: значения — в .env, а
поведение — в хуках класса Boot. Никаких config/*.php: что не значение,
то код, и наоборот.
.env — значения
Файл создаётся из шаблона при cfg init. Основные переменные:
| Переменная | Значение |
|---|---|
WINTER_KEY |
32-байтный секрет проекта — подпись ключей, токены |
TIME_ZONE |
Таймзона для date_default_timezone_set() (напр. UTC) |
DEBUG |
true — отключает кеши маршрутов и DI (живой скан), показывает трейсы в логах и ответах ошибок |
Логирование
Winter логирует через winter-logger. Базовые переменные:
| Переменная | По умолчанию | Значение |
|---|---|---|
LOG_LEVEL |
(пусто) | Минимальный уровень. Пусто → логирование выключено |
LOG_FORMAT |
line |
line или json |
LOG_OUTPUT |
auto |
auto / stdout / stderr / syslog / file / null |
LOG_FILE |
(авто) | Путь к файлу при LOG_OUTPUT=file |
LOG_FILE_MAX |
30 |
Сколько суточных файлов хранить |
LOG_SYSLOG_IDENT |
winter |
Тег программы в syslog |
Каналы и переопределения
Есть каналы sys / http / cli; любую переменную можно переопределить для
канала префиксом LOG_{CHANNEL}_ (напр. LOG_HTTP_LEVEL=warning). Полный
reference — на странице логирования и в доках logger.
База данных
Значения подключения читаются классом DbConfig через env():
| Переменная | Значение |
|---|---|
DB_DRIVER |
Драйвер (pgsql, mysql…) |
DB_HOST, DB_PORT |
Хост и порт |
DB_NAME |
Имя базы |
DB_USER, DB_PASS |
Учётные данные |
Подробнее о классах конфигурации БД — в разделе «База данных».
Boot — поведение
Вся программная настройка — в bootstrap.php, в классе Boot extends BaseBoot.
Вы переопределяете только нужные хуки (все, кроме configure(), опциональны).
Порядок вызова фиксирован для всех точек входа:
1. configure() → Kernel::init(): пути, .env, логирование, таймзона
2. DI scan → автопоиск #[Singleton] / #[Request] / #[Transient]
3. providers($c) → ручные привязки, фабрики, значения
4. channels() → доп. каналы логов
5. plugins() → подприложения с префиксом маршрута
6. httpCors() → глобальная политика CORS
7. health() → эндпоинты /actuatorМинимальный Boot
<?php
declare(strict_types=1);
use Flytachi\Winter\K2\BaseBoot;
use Flytachi\Winter\K2\Kernel;
require __DIR__ . '/vendor/autoload.php';
class Boot extends BaseBoot
{
protected static function configure(): void
{
Kernel::init();
}
// Остальные хуки опциональны — по умолчанию разумные no-op'ы.
}Хуки
| Хук | Зачем |
|---|---|
configure() |
Kernel::init() — пути, .env, логирование, таймзона |
providers(Container $c) |
Ручные привязки DI, фабрики, скалярные значения |
channels() |
Доп. каналы логов через Kernel::channel('job') |
httpCors() |
Глобальный CORS через Cors::configure(...) |
health() |
Эндпоинты /actuator через Health::configure(...) |
plugins() |
Подприложения через Plugin::registry('acme/auth', '/auth') |
Пути проекта
Kernel::init() принимает переопределения всех путей (pathPublic,
pathStorage, pathResource…). Без аргументов они выводятся из корня проекта —
для стандартной раскладки менять ничего не нужно.
Регенерация ключа
php call cfg key -gДальше
- Быстрый старт — собрать первый маршрут
- Структура проекта — где лежит
bootstrap.php