Laravel 11 — новая глава в эволюции фреймворка, которая предлагает множество нововведений, призванных сделать разработку современных веб-приложений еще проще, продуктивнее и масштабируемее. Я рад поделиться основными изменениями и улучшениями, которые принесла эта версия.
Семантическое версионирование и политика поддержки
Laravel, как всегда, придерживается семантического версионирования. Основные релизы выходят ежегодно в первом квартале. Важно отметить, что обновления минорных и патч-релизов совместимы и не вносят критических изменений, поэтому вы можете безопасно использовать ограничения версии вроде ^11.0. Для исправлений ошибок предоставляется поддержка в течение 18 месяцев, а для исправлений безопасности — 2 года.
Версия 11 требует PHP 8.2 и поддерживает новейшие версии. Это позволяет максимально эффективно использовать современные возможности языка и гарантирует производительность.
Упрощенная структура приложения
Laravel 11 делает шаг в сторону упрощения структуры новых приложений. Все настройки теперь сосредоточены в файле bootstrap/app.php. Здесь можно определить маршруты, промежуточное ПО, обработку исключений и провайдеры служб.
- Провайдеры служб: Вместо нескольких классов теперь используется один AppServiceProvider, где можно регистрировать события, привязки моделей и ворота авторизации.
- Маршрутизация API и Broadcasting: Файлы api.php и channels.php по умолчанию отсутствуют, но их можно легко добавить с помощью команд php artisan install:api и php artisan install:broadcasting.
Новый подход к промежуточному ПО и обработке исключений
Промежуточное ПО теперь стало встроенной частью фреймворка, что значительно упрощает его настройку. Аналогично, обработка исключений теперь задается в bootstrap/app.php. Это позволяет уменьшить количество файлов, включенных в проект, и упростить управление.
Laravel Reverb — масштабируемые WebSocket
Одно из ключевых нововведений — Laravel Reverb, сервер WebSocket, который интегрируется с Laravel Echo для реального времени. Reverb поддерживает горизонтальное масштабирование через Redis и обеспечивает простую настройку:
Ограничение скорости на уровне секунд
Теперь можно задавать ограничения скорости на уровне секунд, что полезно для более точного контроля запросов:
Маршрут для проверки здоровья
Для проверки работоспособности приложения внедрен простой маршрут /up, который можно использовать с инструментами мониторинга.
Плавная ротация ключей шифрования
Laravel 11 поддерживает использование нескольких ключей шифрования, что позволяет плавно обновлять ключи без необходимости разлогинивать всех пользователей.
Новшества для разработчиков
- Автоматическое рехэширование паролей: При изменении сложности хэша пароли пользователей автоматически обновляются при их следующей аутентификации.
- Интеграция с Prompt: Теперь в консольных приложениях можно использовать Laravel Validator для проверки ввода.
- Тестирование очередей: Новый метод withFakeQueueInteractions упрощает тестирование заданий в очереди.
Новые команды Artisan
Добавлены команды для создания классов, интерфейсов, перечислений и трейтов:
Производительность и поддержка баз данных
- SQLite в памяти: Тесты стали выполняться быстрее благодаря поддержке повторного использования PDO.
- MariaDB: Впервые появился отдельный драйвер для этой СУБД.
- Инспекция схем: Теперь доступны методы для управления таблицами, колонками и индексами.
Другие полезные улучшения
- Функция once: Позволяет кэшировать результаты замыканий на уровне запроса.
- Кастомизация типов данных в моделях: Теперь можно задавать касты через методы, что дает больше гибкости.
Laravel 11 — это шаг вперед в упрощении и улучшении разработки, сохраняя традиционное удобство фреймворка. Я уверен, что эти изменения позволят вам создавать масштабируемые и современные приложения с еще большим комфортом.