
Когда выйдет Laravel 12?
Согласно политике поддержки (Support Policy), выход Laravel 12 запланирован на первый квартал 2025 года.
Однако это не означает, что вам нужно немедленно обновлять все свои проекты. Последняя LTS-версия (долгосрочная поддержка) была в Laravel 6, но каждая основная версия имеет двухлетний цикл обновлений, что даёт достаточно времени, чтобы привести кодовую базу в порядок и обновить её.
Laravel 11 будет получать исправления ошибок (bug fixes) до 3 сентября 2025 года и исправления безопасности (security fixes) до 12 марта 2026 года.
Версия | Поддерживаемые версии PHP | Дата релиза | Исправления ошибок до | Исправления безопасности до |
---|---|---|---|---|
11 | 8.2–8.3 | 12 марта 2024 года | 3 сентября 2025 года | 12 марта 2026 года |
12 | 8.2–8.3 | 1 квартал 2025 года | 3 квартал 2026 года | 1 квартал 2027 года |
Установка и тестирование Laravel 12 прямо сейчас
Поскольку Laravel 12 ещё не выпущен, вы можете установить его в режиме разработки, используя флаг --dev
для официального установщика Laravel. Он подтягивает главную (main) ветку репозитория laravel/laravel
, где всегда лежит самый свежий код:
laravel new new-project--dev
Или же, если вам привычнее пользоваться Composer напрямую:
composer create-project --prefer-dist laravel/laravel new-project dev-master
Что нового в Laravel 12
Удивительно, но Laravel 12 не привносит каких-то крупных новшеств только в свою ветку. Большинство новых возможностей появилось в течение жизненного цикла 11-й версии. Фактически, 12-я версия — это преимущественно «полирующий» релиз, направленный на повышение производительности, исправления и улучшения стабильности.
Изменения, ломающие совместимость (breaking changes), на которые стоит обратить внимание
1. Str::is() теперь сопоставляет многострочные строки
Хелпер Str::is()
(а также str()->is()
) теперь по-настоящему сопоставляет многострочные строки с помощью модификатора s
в регулярных выражениях. Раньше шаблоны вида *
не охватывали символы новой строки. Если ваш код зависел от предыдущего поведения, это может стать серьёзным изменением.
Подробнее: [12.x] Make Str::is() match multiline strings.
2. Схема дампа для MariaDB использует собственные инструменты CLI
Система миграций Laravel теперь использует нативные инструменты командной строки MariaDB (mariadb-dump
и mariadb
). Флаг --column-statistics
удалён, поскольку он не поддерживается mariadb-dump
. Если вы работаете с MariaDB, убедитесь, что эти инструменты доступны в вашей среде.
Подробнее: Use native MariaDB CLI commands.
3. Обновлён интерфейс ResponseFactory
Интерфейс Illuminate\Contracts\Routing\ResponseFactory
теперь официально включает метод streamJson()
. Хотя в Laravel 11 его конкретная реализация уже была, в контракте он отсутствовал. В случае, если у вас есть собственные реализации этого интерфейса, необходимо добавить новый метод, чтобы соответствовать обновлённому контракту.
Подробнее: [12.x] Adds missing streamJson() to ResponseFactory contract.
Исправленные ошибки
Сохранение числовых ключей в Validator
Ранее в валидаторе существовала проблема, когда числовые ключи в правилах валидации переиндексировались, что приводило к некорректным сообщениям об ошибках. В Laravel 12 это исправлено: теперь числовые ключи сохраняются, как и ожидается.
Подробнее: [12.x] Preserve numeric keys on the first level of the validator rules.
Подготовка фреймворка и скелета к v12
Чтобы новые приложения Laravel использовали самые свежие компоненты, сам фреймворк и стандартный скелет (laravel/laravel) были обновлены. В composer.json
теперь указывается "laravel/framework": "^12.0"
, а все связанные пакеты переведены на ветку 12.x.
Подробнее:
Что ещё учесть при планировании миграции?
Проверка зависимостей
Перед обновлением удостоверьтесь, что все используемые пакеты и библиотеки совместимы с Laravel 12. Большинство популярных пакетов обновляются достаточно быстро, но если вы пользуетесь менее распространёнными библиотеками, стоит проверить их репозитории или задать вопрос автору.
PHP-версия
Официально Laravel 12 поддерживает версии PHP 8.2–8.3. Убедитесь, что ваш хостинг или серверная среда соответствует этим требованиям или подготовьтесь к обновлению PHP.
План тестирования
Рекомендуется иметь в проекте хорошее покрытие тестами, чтобы быстро выявлять непредвиденные последствия перехода на новую версию. Если тестов пока мало, имеет смысл дополнить их ключевыми сценариями.
Использование новых возможностей
Несмотря на то, что крупных «новинок» в Laravel 12 нет, за время развития 11-й ветки появились полезные фичи (например, новые методы в коллекциях, обновления в Eloquent и т.д.). Пересмотрите свои проекты, возможно, где-то вы используете «велосипеды», а фреймворк уже предлагает готовое решение.
Лучшие практики миграции
Если ваш проект большой, делайте обновление поэтапно. Можно создать отдельную ветку или тестовый стенд (staging) и проверить совместимость, прежде чем вливать изменения в основную ветку.
Запланируйте время на рефакторинг
При переходе к новой мажорной версии — хорошее время избавиться от устаревшего кода, оптимизировать архитектуру и привести проект в «чистый» вид.