Начало работы

Структура проекта

Проект Winter намеренно плоский: несколько файлов в корне и одна папка под ваш код. Нет config/, нет routes/, нет app/ — конфигурация в .env и Boot, а маршруты объявляются атрибутами прямо в контроллерах.

Дерево

text
my-app/
├── bootstrap.php     — класс Boot: вся конфигурация и хуки
├── call              — CLI-вход (Boot::cli), запуск команд
├── composer.json     — пакет проекта; зависит от flytachi/winter-kernel
├── public/
│   ├── index.php     — фронт-контроллер FPM (Boot::web)
│   └── static/       — статические ассеты
├── main/             — ваш код (PSR-4, namespace Main\)
│   └── MainController.php
├── storage/
│   ├── cache/        — кеши ядра и приложения (mapping.php, di.php…)
│   └── logs/         — файлы логов при LOG_OUTPUT=file
├── .env              — переменные окружения
└── vendor/

Что за что отвечает

Путь Роль
bootstrap.php Класс Boot extends BaseBoot — конфигурация проекта и все хуки. См. Конфигурацию
call Точка входа CLI: Boot::cli($argv). Все команды call … идут сюда. Должен быть исполняемым (chmod +x call)
public/index.php Фронт-контроллер под PHP-FPM и dev-сервер: Boot::web()
public/static/ Файлы, отдаваемые веб-сервером напрямую
main/ Ваш код: контроллеры, сервисы, репозитории. PSR-4-корень Main\
storage/cache/ Кеши маршрутов и DI (в проде). Должна быть доступна для записи
storage/logs/ Логи, когда LOG_OUTPUT=file
.env Ключ, таймзона, режим отладки, логирование, БД

Один PSR-4-корень — не предел

Стартер задаёт один префикс Main\ → main/. Добавляйте свои (Api\ → api/, Web\ → web/) в composer.json — сканер маршрутов и DI проходят по всем PSR-4-корням, так что новые контроллеры находятся автоматически.

Растёт проект — что добавить

Эти папки и файлы стартер не создаёт заранее; заводите их по мере надобности:

Когда нужно Добавьте
Шаблоны представлений resources/
Рантайм Swoole server.php (Boot::swoole())
Исполнитель фоновых задач wKernelExecutor (Boot::executor())

Точки входа

Каждому рантайму — свой файл-однострочник, и все зовут один Boot:

Файл Рантайм Тело
public/index.php PHP-FPM / dev Boot::web()
server.php Swoole Boot::swoole()
call CLI Boot::cli($argv)
wKernelExecutor Задачи/джобы Boot::executor($argv)

Дальше