| 1 | # Laravel — версии, требования PHP, апгрейды (мажоры 8–12+) |
| 2 | |
| 3 | **Назначение:** опорная **матрица мажоров** и дисциплина апгрейда без путаницы между ветками документации. Мир `software.laravel`. Детали «как писать код» — в `kb-laravel-fundamentals-v1.md`. |
| 4 | |
| 5 | **Порядок загрузки:** `status-php-laravel-v1.md` → `playbook-laravel-v1.md` → этот файл. PHP-рантайм — `playbook-php-v1.md` + `kb-php-*`. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ### 1. Сводная матрица (ориентир; сверять с официальным release каждой ветки) |
| 10 | |
| 11 | | Laravel (мажор) | Минимальный PHP (типично) | Примечание | |
| 12 | |-----------------|---------------------------|------------| |
| 13 | | 8.x | 7.3 → позже 8.0 | **EOL** для новых проектов; только наследие | |
| 14 | | 9.x | 8.0+ | Symfony 6; EOL для greenfield | |
| 15 | | 10.x | 8.1+ | Долгая ветка для многих продов | |
| 16 | | 11.x | 8.2+ | Упрощённый skeleton, минимум default файлов | |
| 17 | | 12.x | 8.2–8.5 (диапазон по docs 12.x) | Актуальный ориентир KB | |
| 18 | |
| 19 | - **Fact:** точные диапазоны и исключения — в `https://laravel.com/docs/{X}.x/releases` и в `composer.json` пакета `laravel/framework`. |
| 20 | - **Heuristic:** не переносить примеры кода из docs **12.x** на приложение **10.x** без проверки синтаксиса и changelog. |
| 21 | - **Confidence:** medium (версии PHP меняются с патчами политики; первоисточник — docs + lockfile) |
| 22 | |
| 23 | --- |
| 24 | |
| 25 | ### 2. Что обычно отличается между мажорами (для маршрутизации вопросов) |
| 26 | |
| 27 | - **Laravel 9:** переход на Symfony 6; типичные deprection в сторону строгих сигнатур. |
| 28 | - **Laravel 10:** обновления зависимостей, выравнивание с PHP 8.1+ фичами в экосистеме. |
| 29 | - **Laravel 11:** **slimmer default app** (меньше файлов из коробки), изменения в bootstrap/service providers по сравнению с 10; новые дефолты в `bootstrap/app.php` (концептуально — «одна точка конфигурации приложения»). |
| 30 | - **Laravel 12:** накопительные улучшения поверх 11; всегда читать **Release notes** и **Upgrade Guide** для **целевой** ветки. |
| 31 | |
| 32 | - **Heuristic:** вопрос «где `Kernel.php` / где регистрировать маршруты в новом стиле» — почти всегда про **11+ vs 10−**. |
| 33 | - **First adoption task:** в README репозитория зафиксировать: `laravel/framework` ^X.Y, PHP ^A.B, способ деплоя. |
| 34 | - **Success criterion:** любой разработчик открывает нужную ветку docs за ≤1 минуту. |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ### 3. Дисциплина апгрейда (операционно) |
| 39 | |
| 40 | - **Fact:** официальный путь — **Upgrade Guide** для каждого промежуточного мажора (не перепрыгивать через несколько мажоров без плана). |
| 41 | - **Heuristic:** сначала поднять **PHP** до диапазона целевого Laravel, затем `composer update` с фиксацией конфликтов пакетов (`laravel/*`, `spatie/*`, `nunomaduro/collision`, testing stack). |
| 42 | - **Check:** полный `php artisan test`, ручной smoke критичных маршрутов, прогон очередей на stage. |
| 43 | - **Decision criterion:** зелёные тесты + отсутствие deprecations, блокирующих прод (или явный backlog). |
| 44 | - **Confidence:** high (процесс), medium (конкретный diff между X и Y) |
| 45 | |
| 46 | --- |
| 47 | |
| 48 | ### 4. LTS и поддержка |
| 49 | |
| 50 | - **Fact:** политика поддержки версий публикуется на laravel.com (release schedule). Не дублировать даты здесь — они устаревают. |
| 51 | - **Heuristic:** прод на EOL-мажоре — план миграции важнее новых фич. |
| 52 | - **Transfer_boundary:** enterprise SLA и security patches — по контракту с командой, не по этой KB. |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## Registry card (template-knowledge-card-v1) |
| 57 | |
| 58 | ### Provenance |
| 59 | - source_refs: `https://laravel.com/docs/12.x/releases`; обобщение практик апгрейда; updated 2026-03-01 |
| 60 | - created_at: 2026-03-01 |
| 61 | - updated_at: 2026-03-01 |
| 62 | - author: agent-notes KB maintainer |
| 63 | |
| 64 | ### Metadata |
| 65 | - card_id: KC-2026-03-01-LARAVEL-VERSIONS |
| 66 | - world: software.laravel |
| 67 | - layer: world |
| 68 | - tags: laravel; upgrade; php-versions; lts |
| 69 | - status: active |
| 70 | |
| 71 | ### Epistemic Linkage |
| 72 | - epistemic_basis: fact + inference |
| 73 | - evidence_type: official docs + composer constraints |
| 74 | - confidence: medium |
| 75 | - uncertainty: точные даты EOL и минорные требования PHP |
| 76 | - falsification_trigger: расхождение с laravel.com/docs/{major}.x/releases для заявленного мажора |
| 77 | - transfer_boundary: не использовать матрицу для не-Laravel стеков |
| 78 | |
| 79 | ### Core Unit |
| 80 | - context: планирование апгрейда, несовпадение примеров docs с проектом |
| 81 | - signal: «на каком мы Laravel», «почему не компилится после update» |
| 82 | - action: lockfile + Upgrade Guide ветки |
| 83 | - outcome: осознанный пошаговый апгрейд |
| 84 | - lesson: мажор Laravel и мажор PHP — связанные ограничения |
| 85 | |
| 86 | ### Operationalization |
| 87 | - first_adoption_task: записать версии в README и CI matrix |
| 88 | - validation_check: `composer validate`, `php artisan about` (где доступно) |
| 89 | - success_criterion: документация ветки docs совпадает с composer.lock |
| 90 | - rollback_or_mitigation: git revert + composer.lock из VCS |
| 91 | |
| 92 | ### Lifecycle |
| 93 | - supersedes: — |
| 94 | - superseded_by: — |
| 95 | - deprecation_reason: — |
| 96 | |
| 97 | |