Экосистема
Winter — не монолит. Ядро собрано из самостоятельных библиотек: у каждой свой репозиторий, своя версия и свои доки. Любую можно понять отдельно, обновить отдельно и использовать вне фреймворка.
Ядро
flytachi/winter-kernel — единственный пакет, который вы подключаете сами:
composer require flytachi/winter-kernelОн тянет остальное за собой. В ядре живёт то, что делает Winter фреймворком:
| Слой | Что внутри |
|---|---|
| HTTP | Маршрутизация, привязка параметров, валидация, ответы, middleware, CORS |
| Приложение | Обход проекта, сборка контейнера, атрибуты #[Enable*], конфигураторы |
| PPA | Репозитории, сущности, конструктор запросов, миграции, пул соединений |
| Процессы | Стереотипы Process и Daemon, планировщик, параллельные вызовы #[Async] |
| Консоль | Команда call, генераторы, автодополнение |
Ядро — это type: library, а не шаблон проекта: каркас вы создаёте сами, из
нескольких файлов. Как именно — в Установке.
Библиотеки
Приходят вместе с ядром, отдельно ставить не нужно.
| Пакет | Что делает | Доки |
|---|---|---|
winter-di |
Контейнер: автовайринг, области видимости, атрибуты | → DI |
winter-logger |
Логирование PSR-3 с каналами и контекстом | → Logger |
winter-cdo |
Типобезопасный PDO — фундамент, на котором стоит PPA | → CDO |
winter-thread |
Запуск и контроль дочерних процессов | → Thread |
winter-base |
Базовые типы: HTTP-коды, методы, режимы рантайма, исключения | — |
file-store |
Файловое хранилище для служебных данных | — |
Кроме них ядро использует vlucas/phpdotenv для чтения .env.
Подключаются отдельно
| Пакет | Что делает | Доки |
|---|---|---|
winter-ppa |
Слой БД: репозитории, сущности, миграции, пул соединений | → PPA |
winter-redis |
Пуловый Redis: сторы, хеши, списки, стримы | → Redis |
winter-cpool |
Пул соединений, не знающий о драйверах | → CPool |
flytachi/jwt |
Строго типизированные JWT и JWKS | → JWT |
Зачем такое разделение
Границы между пакетами — не косметика, а способ сдерживать сложность.
Обновляется по частям. Исправление в логгере выходит версией логгера. Не нужно ждать релиза всего фреймворка и не нужно принимать вместе с исправлением ещё двадцать чужих изменений.
Проверяется по частям. У каждой библиотеки свои тесты, не зависящие от остальных. Контейнер тестируется без HTTP, слой БД — без контейнера.
Живёт вне фреймворка. winter-di и winter-logger подключаются в любой
PHP-проект и работают там сами по себе. Это и полезно, и полезно как проверка: если
библиотека требует вокруг себя весь фреймворк, значит границу провели неверно.
Где что документировано
- Эти доки — про то, как писать приложение: маршруты, запросы, работа с базой, процессы, консоль, конфигурация.
- Доки пакетов — глубокий reference по конкретной библиотеке: ручные привязки контейнера, процессоры логгера, тонкости конструктора запросов.
Правило простое: как только речь заходит о внутренностях отдельной библиотеки — переходите по ссылке в её доки.
Дальше
- Установка — собрать проект
- Ключевые понятия — как ядро связывает всё вместе
- Философия — почему решения приняты так