Laravel 12: первый взгляд и дата релиза

автор Данила Справцев, Senior Web Developer

Laravel 12

Когда выйдет 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) и проверить совместимость, прежде чем вливать изменения в основную ветку.

  • Запланируйте время на рефакторинг

    При переходе к новой мажорной версии — хорошее время избавиться от устаревшего кода, оптимизировать архитектуру и привести проект в «чистый» вид.

Последние статьи

Время от времени опыт трансформируется в текст и приобретает свое место на полке.

Время принимать решение - Готовы обсудить проект?