Введение

Экосистема

Winter — не монолит. Ядро собрано из самостоятельных библиотек: у каждой свой репозиторий, своя версия и свои доки. Любую можно понять отдельно, обновить отдельно и использовать вне фреймворка.

Ядро flytachi/winter-kernelТип libraryNamespace Flytachi\Winter\Kernel

Ядро

flytachi/winter-kernel — единственный пакет, который вы подключаете сами:

bash
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 по конкретной библиотеке: ручные привязки контейнера, процессоры логгера, тонкости конструктора запросов.

Правило простое: как только речь заходит о внутренностях отдельной библиотеки — переходите по ссылке в её доки.

Дальше