Skip to content

Фаза 0 — Целевая платформа: Laravel 13, PHP, Filament

Статус: решение принято (июль 2026). На чём строить ядро CMS, которое проживёт годы в managed-парке. Влияет на все контракты фазы 0 (минимальные версии зависимостей, синтаксис, политику апгрейда парка). Опирается на факты релиз-цикла, а не на память.

Короткий ответ

Laravel 13 + PHP 8.4 + Filament v5 (≥ 5.6.6). Стартовать новое ядро в 2026 на Laravel 12 — значит родиться на версии, у которой багфиксы кончаются через месяц (август 2026). Для продукта с многолетним жизненным циклом это анти-паттерн: заплатить миграцию сразу же после старта.

Факты релиз-цикла (на июль 2026)

ФактЗначениеИсточник
Laravel 13 вышел17 марта 2026laravel.com/docs/13.x
Апгрейд 12 → 13zero breaking changes, ~10 минутrelease notes
Минимум PHP для L13PHP 8.3 (рекомендуется 8.4)release notes
Laravel 12 — багфиксы до13 августа 2026endoflife.date
Laravel 12 — секьюрити до24 февраля 2027endoflife.date
Laravel 13 — багфиксы до~Q3 2027политика 18 мес
Laravel 13 — секьюрити до~Q1 2028политика 24 мес
Filament v5 поддержка L13с v5.6.6 (illuminate/contracts ^13.0); v5.0–5.3.5 — нетpackagist
Ритм мажоров Laravel1 мажор в год, ~Q1; миноры без breakingполитика

Ключевое, что меняет решение: Laravel убрал боль мажорных апгрейдов. С L9→L10→L11→ L12→L13 апгрейды стали near-zero-breaking (10–30 минут). Историческая осторожность «сидим на предыдущем мажоре, пока экосистема догонит» больше не окупается — догонять почти нечего.

Почему 13, а не 12

1. Стартовать на уходящей версии — заведомый долг. Ядро в фазе 1 родится летом–осенью 2026. Laravel 12 к этому моменту уже вне окна багфиксов. Родить продукт на нём = запланировать миграцию на первый же квартал жизни. Метрика README «upgrade-тесты с прошлого мажора зелёные» начинает работать с правильного мажора.

2. Апгрейд 12→13 бесплатный, значит риск «13 сырая» мнимый. Zero-breaking означает, что даже если бы мы стартовали на 12, переход занял бы минуты. Но раз он бесплатный — нет причины не взять 13 сразу и не получить лишний год поддержки.

3. Экосистема догнала (это была единственная реальная причина ждать). Стек студии на L13 работает сегодня:

  • Filament v5 ≥ 5.6.6 — L13-совместим (ранние 5.x — нет, поэтому пин по нижней границе);
  • spatie/* — весь набор (путь C) композер-native и следует за мажорами Laravel быстро;
  • Lunar, Livewire 4, laravel/pennant, laravel/scout — на L13.

4. Дольше окно поддержки без апгрейда. L13: багфиксы ~Q3 2027, секьюрити ~Q1 2028. На старте это +год спокойствия для всего парка против L12.

Минимальная версия PHP

Требуем PHP 8.4 (при формальном минимуме L13 = 8.3).

  • PHP 8.4 (релиз ноябрь 2024) — активная поддержка до конца 2026, security до конца 2028;
  • property hooks, asymmetric visibility, новый #[\Override] — чище доменная модель ядра;
  • образы Docker студии (spec docker) стандартизируем на 8.4 — единая матрица для всего парка проще в сопровождении одним разработчиком.

Формально ядро объявит "php": "^8.3" (чтобы не отсекать клиентов на 8.3), но CI-матрица и эталонный образ — 8.4. PostgreSQL 16+ (JSONB+GIN для типов контента — Q5).

Пины версий в контрактах (следствие для фазы 0)

Эталонные нижние границы, которые фиксируются в composer.json ядра и в контракте модуля:

jsonc
"require": {
  "php": "^8.3",
  "laravel/framework": "^13.0",
  "filament/filament": "^5.6.6",     // нижняя граница L13-совместимости — НЕ ^5.0
  "spatie/laravel-medialibrary": "^11",
  "spatie/laravel-permission": "^7.2",
  "laravel/sanctum": "^4",
  "laravel/pennant": "^1"
}

Грабли, зафиксированные фактом: filament/filament: ^5.0 сломает установку на L13 (composer подтянет 5.0–5.3.5 без illuminate/contracts ^13.0). Нижняя граница — строго ^5.6.6. Это ровно тот класс «непонятных ошибок при установке», который ловит preflight из жизненного цикла модулей.

Политика версий Laravel для парка

Продукт живёт дольше одного мажора Laravel — нужна декларируемая политика, а не решение ad-hoc на каждый март.

  • Ядро следует за мажором Laravel в течение одного квартала после релиза. Мажор выходит ~Q1 → ядро апгрейдится к Q2, катит парку волной (stable-канал) через центр обновлений.
  • Пропуск мажора не копим. Zero-breaking делает ежегодный апгрейд дешёвым; пропущенные мажоры превращают дешёвый шаг в дорогой прыжок через два.
  • Один major Laravel = один minor/major ядра с записью в CHANGELOG и upgrade-тестами в CI (условие метрики «зелёные upgrade-тесты»).
  • PHP-минимум ядра поднимаем осознанно, отдельным мажором ядра (breaking для клиентов на старом PHP), не тихо вместе с Laravel.

Риски и смягчение

РискСмягчение
L13 «слишком свежая», редкий пакет отстаётАпгрейд 12↔13 zero-breaking → откат на 12 дёшев, если что-то критичное не готово; но весь наш стек уже на 13
Filament подтянет несовместимую 5.xЖёсткий пин ^5.6.6; preflight ловит конфликт до установки
Ежегодный апгрейд парка — нагрузкаВолны + канареечный гейт автоматизируют; на 1–2 сайтах — CLI; окупается флит-дашбордом (фаза 4)
PHP 8.4 в образе, клиент на shared-хостинге 8.3Формальный минимум ^8.3; managed-парк на своих Docker-образах 8.4

Итог

Строить на Laravel 13 / PHP 8.4 / Filament v5.6.6+, объявить ^8.3/^13.0 в контрактах, пинить Filament по нижней L13-совместимой границе и декларировать политику «следуем за мажором Laravel в течение квартала». Это единственный выбор, не создающий миграционного долга в первый же месяц жизни ядра и дающий максимальное окно поддержки для парка.

Связи

Источники

Внутренняя база знаний студии