
Новые возможности и улучшения
throwUnless()для HTTP-клиента: У объектаResponseпоявился методthrowUnless(). Он выбросит исключение, если код ответа от сервера НЕ успешный (не в диапазоне 200-299). Противоположность методуthrow().- Новые хелперы для времени: В классе
Illuminate\Support\Carbonдобавили удобные методыmilliseconds(),weeks(),months(), чтобы легче создавать интервалы:now()->add(weeks(2)). - Гибкие исключения для очередей: Добавлен метод
ignorePausedAndSignals() для заданий в очереди (Job). Он позволяет заданию выполняться, даже если очередь приостановлена (queue:restart), игнорируя эти сигналы. - Обрезка по шаблону в TrimStrings: В middleware
TrimStringsдобавили поддержку маски (wildcard) в параметреexcept. Теперь можно указать, например,'meta.*', чтобы не обрезать все поля внутри массиваmeta. - «Ленивые» объекты: В ядро фреймворка добавили вспомогательные классы для работы с «ленивой» загрузкой и прокси-объектами (
LazyObject,Proxyable). Пока это низкоуровневый инструмент для пакетов. - Имя для кастомных заданий: Если в классе задания (
Job) есть методdisplayName(), система очередей будет использовать его для логирования вместо имени класса. - Улучшен пул HTTP-запросов: Внутреннее улучшение для
Http::pool(). Методы запроса (get, post) теперь могут возвращать «обещания» (Promise), что делает код чище. Также появилсяFluentPromiseдля более удобной цепочки вызовов внутри пула. - Чище код в PendingRequest: Внутренний рефакторинг HTTP-клиента: уменьшено количество отступов, код метода
send()стал читаемее. - Новая команда
reload: Добавлена служебная командаreload, которую могут использовать пакеты для перезагрузки своих сервисов. Пока для разработчиков приложений не так заметна. - Улучшение типов событий: Улучшена поддержка статического анализа (типизации) при работе с событиями (
Event). - Поддержка JSON Schema: Добавлена внутренняя зависимость
JsonSchemaдля валидации схем JSON. - Обновлён шаблон почты: Визуальное обновление шаблона писем, которые генерирует Laravel по умолчанию.
Исправления ошибок
- Десериализация моделей: Исправлена ошибка, когда у модели
UPDATED_AT = nullи её приводят к массиву. Теперь не вызывает предупреждение. - Кэш с тегами в Redis: Исправлена ошибка, из-за которой не очищался кэш с тегами, если в префиксе соединения Redis использовался дефис
-вместо подчёркивания_. - Полиморфные связи с null: Исправлена работа методов
hasMorph()иwhereDoesntHaveMorph()при использовании логическогоORи пустых (null) значений полей морф-связи. - Потоковая отправка ответа: Исправлена работа потоковой отправки ответа через генератор. Теперь корректно сбрасываются только активные буферы.
- Многобайтовая безопасность: Исправлен хелпер
substrReplace(), чтобы он корректно работал с многобайтовыми строками (например, кириллицей). - Флаг
pretendingв почте: Исправлена ошибка, при которой флаг «притворной» отправки почты (Mail::pretend()) мог не сбрасываться. - Метод
offsetExistsв моделях: Исправлено поведение методаoffsetExists()в моделях Eloquent. Теперь он всегда корректно восстанавливает внутренний флаг отсутствующего атрибута. - Работа с ArrayObject: Исправлена работа хелпера
Arr::first()при передаче ему объектовArrayObjectилиAsArrayObject. - Ошибка статического анализа: Исправлена небольшая ошибка, которую находили анализаторы кода (например, PHPStan).
- Логирование в RoundrobinTransport: В класс
RoundrobinTransport(для почты/нотификаций) теперь корректно передаётся логгер (LoggerInterface) при его создании. - Оптимизация таймаутов кэша: Улучшена внутренняя оптимизация кэша и блокировок кэша.
- Код выхода команды cache:clear: Команда
php artisan cache:clearтеперь всегда возвращает корректный код выхода (0 при успехе, 1 при ошибке).
Прочее
- Тесты для DurationLimiter: Расширены тесты для Redis
DurationLimiter. - Исправление комментария: Исправлена опечатка в комментарии к коду диспетчера событий.
- Обновление npm-зависимости: Обновлена одна внутренняя JavaScript-библиотека, используемая в странице отладки ошибок.
Итог: Основные полезные нововведения — это throwUnless() для HTTP-клиента, новые хелперы времени, улучшенная обрезка строк и более гибкое управление заданиями в очереди. Остальное — важные исправления и внутренние улучшения для стабильности и будущих функций.

Добавить комментарий