Отличные новости для Laravel-разработчиков! Вышел релиз Laravel 12.50.0 с несколькими важными улучшениями для повседневной работы. Вот главное, что нужно знать.
🚀 Ключевые изменения и новые возможности
Эти обновления добавят гибкости и надежности проектам.
🔹 Уникальные слушатели событий в очередях (#58402): Теперь вы можете избежать дублирования задач в очереди для слушателей событий, используя метод
unique(): SendOrderShippedNotification::class)->unique()->onQueue('notifications') → SendOrderShippedNotification::class)->unique()->onQueue('notifications'). Это особенно полезно для частых событий, чтобы предотвратить накопление идентичных заданий.🔹 Элегантное управление дополнениями (appends) у моделей (#58552): Появился новый метод
withoutAppends() для временного отключения глобальных дополнений (accessors/appends) при сериализации модели: $user->withoutAppends()->toArray() → $user->withoutAppends()->toArray().🔹 Enum-поддержка в кеше (#58616): Метод
Cache::get() теперь корректно работает с массивом, содержащим enum-ключи, что упрощает работу с typed-кешированием.🔹 Метод
hasMany() для коллекций (#58550): У объектов Collection появился удобный метод hasMany() для проверки, содержит ли коллекция более одного указанного элемента.🔹 Клонирование состояния в нотификациях (#58558): Исправлено поведение, гарантирующее, что каналы доставки (via), заданные динамически в методе
via(), сохраняются при отправке уведомления через sendNow().🛠 Улучшения и исправления
🔹 Сохранение ассоциативных ключей в отношениях (#58506): При eager loading отношений ассоциативные ключи родительской коллекции теперь сохраняются, что предотвращает неожиданную переиндексацию.
🔹 Использование
morphMap при сериализации моделей (#58482): При сериализации идентификаторов модели в заданиях очереди теперь автоматически учитывается глобальный morphMap, обеспечивая консистентность.🔹 Улучшенные типы данных в коде (#58518, #58561, #58565, #58451): Продолжается работа над улучшением типизации в ядре фреймворка (хелпер
Arr, миграции, команды Console, фасад Cache), что улучшает анализ кода в IDE.🔹 Безопасность и обслуживание: Внутренние зависимости обновлены для устранения уязвимости в PHPUnit (CVE) и других проблем совместимости (#58526, #58542, #58563).
⚙️ Прочие изменения
Релиз также содержит множество других правок, улучшающих стабильность, тестирование и взаимодействие с разработчиком: улучшения в компоненте
InteractsWithData для тестов (#58607, #58608), исправление двойного перевода сообщений об ошибках валидации (#58598), корректная обработка исключений при установке пакетов через Composer (#58609) и многие другие мелкие исправления и улучшения документации.Что в итоге?
Laravel 12.50.0 — релиз, который приносит ценные практические улучшения (уникальные слушатели, управление appends, фиксы в отношениях) и продолжает курс на более строгую и предсказуемую кодовую базу. Обновление можно установить через
composer update. Полный список изменений можно найти в официальном релизе
📱 @dev_notes_ru
#Laravel #Laravel12
