Команда Laravel цього тижня представила версію 12.36.0, яка включає контроль паралельності для методів HTTP pool та batch, а також запроваджує два нові методи для колекцій Eloquent і багато іншого. Додатково Inertia 2.x отримала підтримку для View Transitions.
# Inertia View Transitions
Pascal Baljet додав можливість переходів у вигляді перегляду через View Transition API в Inertia 2.x. Це працює з переходами роутера, посиланнями та глобально:
router.visit('/another-page', { viewTransition: true })
// Передати зворотній виклик
router.visit('/another-page', {
viewTransition: (transition) => {
transition.ready.then(() => doSomething())
transition.updateCallbackDone.then(() => doSomething())
transition.finished.then(() => doSomething())
},
})
Це також працює з компонентом <Link/>, який може приймати пустий атрибут або зворотній виклик:
<template>
<Link href="/another-page" view-transition> Перейти </Link>
<Link href="/another-page" :view-transition="(transition) => transition.finished.then(...)">
Перейти
</Link>
</template>
Детальніше про View Transitions можна дізнатися в документації.
# Контроль паралельності HTTP-клієнта
Wendell Adriel додав контроль паралельності для методів Http::pool() і Http::batch(). Це дозволяє контролювати кількість одночасних запитів, які може виконувати HTTP-клієнт:
$responses = Http::pool(fn (Pool $pool) => [
$pool->get('http://localhost/first'),
$pool->get('http://localhost/second'),
$pool->get('http://localhost/third'),
], 2); // Встановлює максимальну кількість одночасних HTTP-запитів на 2
$responses = Http::batch(fn (Batch $batch) => [
$batch->as('first')->get('http://localhost/first'),
$batch->as('second')->get('http://localhost/second'),
$batch->as('third')->get('http://localhost/third'),
])->concurrency(2)->send(); // Встановлює максимальну кількість одночасних HTTP-запитів на 2
Деталі реалізації можна знайти в Pull Request #57555.
# Методи колекції Eloquent: setAppends() та withoutAppends()
Luke Kuzmish додав нові методи для колекцій Eloquent, що дозволяють додавати атрибути до кожної моделі:
// До
User::query()->fillAndInsert(
User::factory()
->count(100)
->make()
->each(fn ($u) => $u->setAppends([]))
);
// Після
User::query()->fillAndInsert(
User::factory()
->count(100)
->make()
->withoutAppends()
);
Деталі реалізації можна знайти в Pull Request #57561.
# Дозволити використання великих букв у текстах повідомлень валідатора
Florian Raith впровадив оновлення, яке розширює можливість форматування текстів повідомлень, щоб вони могли починатися з великих літер:
// Приклад
'same' => 'Поле :attribute повинно відповідати :other.',
// До: "Поле Password повинно відповідати :Other."
// Після: "Поле Password повинно відповідати підтвердженню Password."
Детальніше в Pull Request #57556.
# Примітки до випуску
Повний список нових функцій та оновлень доступний нижче, а також різниця між версіями 12.35.0 та 12.36.0 на GitHub. Наступні примітки до випуску взяті з журналу змін:
# v12.36.0
- [12.x] Видалити return void з конструктора Http\Client\Batch @rodrigopedra у https://github.com/laravel/framework/pull/57518
- [12.x] Додати неймспейс для ключів блокування кешу файлів @faisuc у https://github.com/laravel/framework/pull/57516
- [12.x] Видалити тег @return з конструктора @noir4y у https://github.com/laravel/framework/pull/57536
- [12.x] Додати відсутню анотацію @throws @AhmedAlaa4611 у https://github.com/laravel/framework/pull/57535
- [12.x] Дозволити ланцюгові виклики на сеттерах @browner12 у https://github.com/laravel/framework/pull/57532
- [12.x] Зупинити подвійну префіксацію шляхів файлової системи S3 @cosmastech у https://github.com/laravel/framework/pull/57534
- [12.x] Тестувати методи побудови
Uri@browner12 у https://github.com/laravel/framework/pull/57549 - [12.x] Рефакторинг методу
jsonSerialize()з використанням match-виразу @amirhshokri у https://github.com/laravel/framework/pull/57552 - [12.x] Примусити редирект на один і той же домен @browner12 у https://github.com/laravel/framework/pull/57533
- [12.x] Додати методи колекції Eloquent:
setAppendsтаwithoutAppends@cosmastech у https://github.com/laravel/framework/pull/57561 - [12.x] Виправити переповнення буфера при очищенні тегів кешу Redis з великою кількістю ключів @faisuc у https://github.com/laravel/framework/pull/57562
- [12.x] Дозволити форматування повідомлень валідатора з великих літер @florianraith у https://github.com/laravel/framework/pull/57556
- Виключити хук властивості при поверненні Model::__sleep() @rafaelqueiroz у https://github.com/laravel/framework/pull/57557
- [12.x] Додати контроль паралельності до Http::pool і Http::batch @WendellAdriel у https://github.com/laravel/framework/pull/57555