Керування паралельністю в Laravel 12.36: переходи у вигляді Inertia

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 30 жовтня, 2025
Цього тижня команда Laravel випустила версію 12.36.0, в якій додано контроль паралельності для HTTP-запитів та нові методи в Eloquent-колекціях. Досліджуйте ці новітні можливості та дізнайтеся, як вони можуть покращити вашу розробку у статті

Команда 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