Релиз Laravel 12.41

Новые возможности и улучшения

  1. throwUnless() для HTTP-клиента: У объекта Response появился метод throwUnless(). Он выбросит исключение, если код ответа от сервера НЕ успешный (не в диапазоне 200-299). Противоположность методу throw().
  2. Новые хелперы для времени: В классе Illuminate\Support\Carbon добавили удобные методы milliseconds()weeks()months(), чтобы легче создавать интервалы: now()->add(weeks(2)).
  3. Гибкие исключения для очередей: Добавлен метод ignorePausedAndSignals() для заданий в очереди (Job). Он позволяет заданию выполняться, даже если очередь приостановлена (queue:restart), игнорируя эти сигналы.
  4. Обрезка по шаблону в TrimStrings: В middleware TrimStrings добавили поддержку маски (wildcard) в параметре except. Теперь можно указать, например, 'meta.*', чтобы не обрезать все поля внутри массива meta.
  5. «Ленивые» объекты: В ядро фреймворка добавили вспомогательные классы для работы с «ленивой» загрузкой и прокси-объектами (LazyObjectProxyable). Пока это низкоуровневый инструмент для пакетов.
  6. Имя для кастомных заданий: Если в классе задания (Job) есть метод displayName(), система очередей будет использовать его для логирования вместо имени класса.
  7. Улучшен пул HTTP-запросов: Внутреннее улучшение для Http::pool(). Методы запроса (get, post) теперь могут возвращать «обещания» (Promise), что делает код чище. Также появился FluentPromise для более удобной цепочки вызовов внутри пула.
  8. Чище код в PendingRequest: Внутренний рефакторинг HTTP-клиента: уменьшено количество отступов, код метода send() стал читаемее.
  9. Новая команда reload: Добавлена служебная команда reload, которую могут использовать пакеты для перезагрузки своих сервисов. Пока для разработчиков приложений не так заметна.
  10. Улучшение типов событий: Улучшена поддержка статического анализа (типизации) при работе с событиями (Event).
  11. Поддержка JSON Schema: Добавлена внутренняя зависимость JsonSchema для валидации схем JSON.
  12. Обновлён шаблон почты: Визуальное обновление шаблона писем, которые генерирует Laravel по умолчанию.

Исправления ошибок

  1. Десериализация моделей: Исправлена ошибка, когда у модели UPDATED_AT = null и её приводят к массиву. Теперь не вызывает предупреждение.
  2. Кэш с тегами в Redis: Исправлена ошибка, из-за которой не очищался кэш с тегами, если в префиксе соединения Redis использовался дефис - вместо подчёркивания _.
  3. Полиморфные связи с null: Исправлена работа методов hasMorph() и whereDoesntHaveMorph() при использовании логического OR и пустых (null) значений полей морф-связи.
  4. Потоковая отправка ответа: Исправлена работа потоковой отправки ответа через генератор. Теперь корректно сбрасываются только активные буферы.
  5. Многобайтовая безопасность: Исправлен хелпер substrReplace(), чтобы он корректно работал с многобайтовыми строками (например, кириллицей).
  6. Флаг pretending в почте: Исправлена ошибка, при которой флаг «притворной» отправки почты (Mail::pretend()) мог не сбрасываться.
  7. Метод offsetExists в моделях: Исправлено поведение метода offsetExists() в моделях Eloquent. Теперь он всегда корректно восстанавливает внутренний флаг отсутствующего атрибута.
  8. Работа с ArrayObject: Исправлена работа хелпера Arr::first() при передаче ему объектов ArrayObject или AsArrayObject.
  9. Ошибка статического анализа: Исправлена небольшая ошибка, которую находили анализаторы кода (например, PHPStan).
  10. Логирование в RoundrobinTransport: В класс RoundrobinTransport (для почты/нотификаций) теперь корректно передаётся логгер (LoggerInterface) при его создании.
  11. Оптимизация таймаутов кэша: Улучшена внутренняя оптимизация кэша и блокировок кэша.
  12. Код выхода команды cache:clear: Команда php artisan cache:clear теперь всегда возвращает корректный код выхода (0 при успехе, 1 при ошибке).

Прочее

  1. Тесты для DurationLimiter: Расширены тесты для Redis DurationLimiter.
  2. Исправление комментария: Исправлена опечатка в комментарии к коду диспетчера событий.
  3. Обновление npm-зависимости: Обновлена одна внутренняя JavaScript-библиотека, используемая в странице отладки ошибок.

Итог: Основные полезные нововведения — это throwUnless() для HTTP-клиента, новые хелперы времени, улучшенная обрезка строк и более гибкое управление заданиями в очереди. Остальное — важные исправления и внутренние улучшения для стабильности и будущих функций.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *