Команда 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
- [12.x] feat: додано рідні типи повернення для функцій-допомог під керівництвом @calebdw у https://github.com/laravel/framework/pull/56684
- [12.x] Дозволено передавати енум до атрибута
Databaseпід керівництвом @jnoordsij у https://github.com/laravel/framework/pull/56688 - [12.x] Оптимізовано надмірні типізації в документації під керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56690
- Додано можливість встановлення режиму транзакцій для з'єднання SQLite під керівництвом @panda-madness у https://github.com/laravel/framework/pull/56681
- [12.x] Виправлено документацію для
spliceIntoPosition, щоб допустити значенняstring|intпід керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56698 - [12.x] Використано поліфіли
array_firstтаarray_lastпід керівництвом @KIKOmanasijev у https://github.com/laravel/framework/pull/56703 - [12.x] Виправлено шлях до Str в документації помилок під керівництвом @apreiml у https://github.com/laravel/framework/pull/56705
- [12.x] Додано метод
withHeartbeatдоLazyCollectionпід керівництвом @JosephSilber у https://github.com/laravel/framework/pull/56477 - [12.x] Додано метод
toPrettyJsonпід керівництвом @WendellAdriel у https://github.com/laravel/framework/pull/56697 - [12.x] Використано
array_firstтаarray_lastпід керівництвом @KIKOmanasijev у https://github.com/laravel/framework/pull/56706 - [12.x] Виправлено дублювання
MessageLoggedпід керівництвом @cosmastech у https://github.com/laravel/framework/pull/56713 - [12.x] Впорядкування класів в алфавітному порядку під керівництвом @AhmedAlaa4611 у https://github.com/laravel/framework/pull/56743
- [12.x] Нормалізовано розділові знаки для команд у Windows під керівництвом @AhmedAlaa4611 у https://github.com/laravel/framework/pull/56734
- [12.x] Поліпшено покриття тестами для
queue:prune-failedпід керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56732 - [12.x] Узгоджено використання трейту для послідовності під керівництвом @AhmedAlaa4611 у https://github.com/laravel/framework/pull/56727
- [12.x] Виправлено пропозиції Composer для illuminate/container під керівництвом @cosmastech у https://github.com/laravel/framework/pull/56722
- Додано метод nullableTimestampsTz до Blueprint під керівництвом @mohamedhabibwork у https://github.com/laravel/framework/pull/56720
- Додано можливість перевизначення символу під час використання формату валюти під керівництвом @PhilippeThouvenot у https://github.com/laravel/framework/pull/56749
- [12.x] Скасовано #56608 під керівництвом @amirhshokri у https://github.com/laravel/framework/pull/56752
- Скасовано "Додано можливість перевизначення символу під час використання формату валюти" під керівництвом @taylorotwell у https://github.com/laravel/framework/pull/56753
- [12.x] Підтримка параметра
nullу методіBusFake::chain()під керівництвом @stevebauman у https://github.com/laravel/framework/pull/56750 - [12.x] Вилучено непотрібне повернення в ddBody для узгодженості під керівництвом @AhmedAlaa4611 у https://github.com/laravel/framework/pull/56759
- [12.x] Інтерфейс підтримує UnitEnum під керівництвом @parijke у https://github.com/laravel/framework/pull/56758
- [12.x] Виправлено виклик зворотного виклику під час конкурентності: використано кодування base64 під керівництвом @sashko-guz у https://github.com/laravel/framework/pull/56757
- [12.x]
ArrayStore::all()під керівництвом @cosmastech у https://github.com/laravel/framework/pull/56751 - [12.x] Виправлено: Додано
$forceWrapдо JsonResource для узгодженого API-відповіді #56724 під керівництвом @achrafAa у https://github.com/laravel/framework/pull/56736 - [12.x] Гарантує, що об'єкти, що приводяться до типу, можуть бути перетворені на рядки під керівництвом @DarkGhostHunter у https://github.com/laravel/framework/pull/56687