Метод збору Heartbeat у Laravel 12.26: Wayfinder тепер доступний у стартових наборах для React та Vue

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 28 серпня, 2025
Цього тижня команда Laravel представила версію 12.26.0, яка включає нові можливості, такі як метод `withHeartbeat()` для Lazy Collections та `toPrettyJson()` для колекцій і моделей. Чи готові ви дізнатися більше про ці цікаві оновлення? Читайте далі, щоб не пропустити жодну деталь!

Команда Laravel цього тижня випустила версію 12.26.0, яка додала метод withHeartbeat() до Lazy колекцій, а також метод toPrettyJson() для колекцій, моделей та інших елементів. Крім того, стартер-кити Laravel для Vue та React тепер містять Wayfinder, що забезпечує безпечний зв'язок між маршрутами Laravel та вашим фронтендом.

# Стартер-кити для React і Vue тепер включають Wayfinder

Джо Таненбаум оновив стартер-кити Laravel для React і Vue, додавши Laravel Wayfinder. Wayfinder створює безпечний зв'язок між маршрутами Laravel та вашим фронтендом:

import { store, update } from "@/actions/App/Http/Controllers/PostController";

const Page = () => (
    
{/* */} {/* ... */}
);

# Додано метод withHeartbeat() до LazyCollection

Джозеф Сільбер запропонував новий метод withHeartbeat() для LazyCollection, що дозволяє виконувати колбек через певні інтервали під час лінивої ітерації колекції. Джозеф поділився основним випадком використання цього методу в Запиті на злиття #56477:

У довготривалих завданнях, таких як обробка звітів, може знадобитися утримувати блок, щоб запобігти одночасному виконанню. Проте, якщо код несподівано не звільнить блок, він не повинен залишатися активним вічно. Звичайна стратегія полягає в тому, щоб отримати короткочасний блок і періодично його продовжувати, поки завдання все ще виконується.

Ось приклад, де ми отримуємо блок на 5 хвилин, а потім повторно отримуємо його кожні 4 хвилини (припускаючи, що звіт ніколи не займає повну хвилину для створення):

$lock = Cache::lock('generate-reports', CarbonInterval::minutes(5));

$lock->acquire();

Reports::where('status', 'pending')
    ->lazy()
    ->withHeartbeat(CarbonInterval::minutes(4), $lock->reacquire(...))
    ->each($this->generateReport(...));

$lock->release();

Документацію по колекціях було оновлено, включаючи розділ про метод withHeartbeat().

# Метод Pretty JSON

Венделл Адріель запропонував метод toPrettyJson(), який був реалізований у більшості місць, де існує метод toJson(). Наприклад, у колекціях, моделях, JSON-ресурсах, пагінаторах, Fluent екземплярах та пакетах повідомлень. Ось приклад з Запиту на злиття #56697 з використанням колекцій:

// До
$collection = collect([1, 2, 3]);
$collection->toJson(JSON_PRETTY_PRINT);

// Після
$collection = collect([1, 2, 3]);
$collection->toPrettyJson();

# Примітки до релізу

Ви можете ознайомитися з повним переліком нових функцій та оновлень нижче і переглянути різницю між версіями 12.25.0 і 12.26.0 на GitHub. Наступні примітки були взяті безпосередньо з чангелогу:

# v12.26.0