Команда Laravel цього тижня випустила версію 12.41, яка включає оновлений сучасний шаблон електронних листів, нові допоміжні функції для тривалості в мілісекундах, тижнях та місяцях, команду перезавантаження для сервісів під час розгортання та інші нововведення.
# Сучасизація шаблону електронної пошти
Тейлор Отвелл оновив стандартний шаблон електронної пошти Laravel на більш сучасний варіант:

Деталі реалізації можна знайти у Pull Request #57987.
# Допоміжні функції для тривалості в мілісекундах, тижнях та місяцях
Сандер Мулер додав допоміжні функції для milliseconds(), weeks() та months(), продовжуючи впровадження таких функцій з версії Laravel 12.40:
use function Illuminate\Support\{seconds, minutes, hours, days, years, milliseconds, weeks, months};
milliseconds(10);
weeks(4);
months(72);
// повертає Carbon\CarbonInterval
// Існуючі допоміжні функції тривалості, випущені в Laravel 12.40
seconds(5);
minutes(5);
hours(1);
days(30);
years(1);
# Додавання методу throwUnless до HTTP-клієнта
Кас Ебберс додав метод throwUnless() до класу Response HTTP-клієнта:
use Illuminate\Http\Client\Response;
// Викидає виключення, якщо сталася помилка і умова є хибною...
$response->throwUnless($condition);
// Викидає виключення, якщо сталася помилка і заданий замикання повертає хибне значення...
$response->throwUnless(fn (Response $response) => false);
Метод throwUnless() раніше вже був задокументований, але реалізований лише в PendingRequest. Дивіться Pull Request #57951 для деталей.
# Додавання команди перезавантаження і можливість реєстрації сервісів
Баррі ван Хевель представив команду reload Artisan та можливість для провайдерів сервісів додавати свої команди. Це дозволяє сервісам мати єдину команду, яка реалізує етапи розгортання після завершення роботи:
public function boot()
{
$this->reloads('reverb:restart');
}
Деталі можна знайти в Pull Request #57923.
# Примітки до випуску
Повний список нових функцій та оновлень можна переглянути нижче, а також різницю між 12.40.0 та 12.41.0 на GitHub. Наступні примітки до випуску є безпосередньо з змін:
# v12.41.0
- [12.x] Додано
throwUnless()доIlluminate\Http\Client\Responseвід @CasEbb в https://github.com/laravel/framework/pull/57951 - [12.x] Виправлено помилку депрекації в
HasAttributes::addDateAttributesToArray()приUPDATED_AT = nullта моделі, що намагається перетворити в масив від @crynobone в https://github.com/laravel/framework/pull/57945 - [12.x] Зменшено відступ у
PendingRequest@send()за рахунок раннього повернення від @cosmastech в https://github.com/laravel/framework/pull/57943 - [12.x] HTTP методи PendingRequest також можуть повертати проміси від @cosmastech в https://github.com/laravel/framework/pull/57941
- [12.x] Виправлено неможливість очистити кеш Redis при тегуванні, якщо префікс містить
-, замість_від @crynobone в https://github.com/laravel/framework/pull/57927 - виправлення: hasMorph/whereDoesntHaveMorph OR групування з nullable morphs від @hannrei в https://github.com/laravel/framework/pull/57937
- [12.x] Очищайте тільки активні буфери під час потокового відповіді за допомогою генератора від @vaishnavyogesh в https://github.com/laravel/framework/pull/57952
- Виправлено функцію substrReplace для безпечності при роботі з багатобайтовими символами від @Nasim25 в https://github.com/laravel/framework/pull/57936
- [12.x] Виправлено помилку статичного аналізу від @cosmastech в https://github.com/laravel/framework/pull/57953
- [12.x] Передача
LoggerInterfaceпри створенні екземпляраRoundrobinTransportвід @jnoordsij в https://github.com/laravel/framework/pull/57956 - [12.x] Оптимізація кешу та таймаутів cache_locks від @chrisnetonline в https://github.com/laravel/framework/pull/57966
- [12.x] Введення
FluentPromiseдля забезпечення чистішого монтажу в Pool від @cosmastech в https://github.com/laravel/framework/pull/57967 - [12.x] Додано залежність у JsonSchema від @pushpak1300 в https://github.com/laravel/framework/pull/57942
- Введення
lazyтаproxyоб'єктів від @timacdonald в https://github.com/laravel/framework/pull/57831 - [12.x] Додайте команду перезавантаження та дозволити реєстрацію сервісів від @barryvdh в https://github.com/laravel/framework/pull/57923
- [12.x] Гарантувати, що прапор імитації завжди скидається в методі
pretend()від @xurshudyan в https://github.com/laravel/framework/pull/57968 - [12.x] Завжди відновлюйте прапор відсутнього атрибута в
offsetExists()від @xurshudyan в https://github.com/laravel/framework/pull/57970 - [12.x] Виправлення функції Arr::first для значень ArrayObject і AsArrayObject від @prince-noman в https://github.com/laravel/framework/pull/57969
- [12.x] Використання displayName() для ідентифікації кастомних завдань від @hxnk в https://github.com/laravel/framework/pull/57499
- [12.x] Розширення тестів Redis DurationLimiter від @miladev95 в https://github.com/laravel/framework/pull/57947
- [12.x] Виправлення граматики в коментарі до диспетчера подій від @shaedrich в https://github.com/laravel/framework/pull/57983
- Сучасизація шаблону електронних листів від @taylorotwell в https://github.com/laravel/framework/pull/57987
- [12.x] Поліпшення типів подій від @shaedrich в https://github.com/laravel/framework/pull/57986
- [12.x] Додайте можливість ігнорувати кеш перевірки queuePaused \ queueShouldRestart від @jackbayliss в https://github.com/laravel/framework/pull/57975
- [12.x] Виправлення коду виходу команди cache:clear при помилці від @alies-dev в https://github.com/laravel/framework/pull/57988
- Оновлення mdast-util-to-hast з 13.2.0 до 13.2.1 в /src/Illuminate/Foundation/resources/exceptions/renderer від @dependabot[bot] в https://github.com/laravel/framework/pull/57994
- [12.x] Додайте допоміжні функції тривалості
milliseconds,weeksтаmonthsдоIlluminate\Supportвід @SanderMuller в https://github.com/laravel/framework/pull/57997 - [12.x] Додати підтримку шаблонів-дій до TrimStrings middleware від @overtrue в https://github.com/laravel/framework/pull/57982