
- Introduction
- Les Starter Kits React et Vue incluent désormais Wayfinder
- Ajout de la méthode withHeartbeat() aux Lazy Collections
- Ajout de la méthode toPrettyJson aux collections
- En savoir plus
Introduction
Cette semaine, l’équipe Laravel a publié la version 12.26.0, ajoutant une méthode withHeartbeat()
aux Lazy Collections, une méthode toPrettyJson()
aux collections, aux modèles, et plus encore. De plus, les kits de démarrage Laravel Vue et React incluent Wayfinder, qui permet de générer des routes type-safe entre Laravel et votre frontend.
1import { store, update } from "@/actions/App/Http/Controllers/PostController";2 3const Page = () => (4 <form {...update.form.put(1)}>5 {/* <form action="/posts/1?_method=PUT" method="post"> */}6 {/* ... */}7 </form>8);
Les Starter Kits React et Vue incluent désormais Wayfinder
Joe Tannenbaum a mis à jour les Starter Kits Laravel React et Vue pour y inclure Laravel Wayfinder. Wayfinder offre un pont type-safe entre vos routes Laravel et votre frontend.
withHeartbeat()
aux Lazy Collections
Ajout de la méthode Joseph Silber a ajouté une nouvelle méthode withHeartbeat()
aux Lazy Collections, qui permet d’exécuter un callback à intervalles réguliers pendant que la collection est énumérée de manière paresseuse. Joseph a présenté le cas d’usage principal de cette méthode dans la Pull Request #56477 :
Pour les tâches longues, comme le traitement par lots de rapports, il peut être nécessaire de maintenir un verrou pour éviter l’exécution concurrente. Cependant, si le code échoue à libérer le verrou de manière inattendue, vous ne voulez pas qu’il persiste indéfiniment. Une stratégie courante consiste à acquérir un verrou de courte durée, puis à le renouveler périodiquement tant que la tâche est en cours d’exécution.
Voici un exemple où un verrou est acquis pour 5 minutes, puis renouvelé toutes les 4 minutes (en supposant qu’un rapport ne prend jamais plus d’une minute à générer) :
1use Carbon\CarbonInterval; 2use Illuminate\Support\Facades\Cache; 3 4$lock = Cache::lock('generate-reports', CarbonInterval::minutes(5)); 5 6if ($lock->get()) { 7 try { 8 Report::where('status', 'pending') 9 ->lazy()10 ->withHeartbeat(11 CarbonInterval::minutes(4),12 fn () => $lock->extend(CarbonInterval::minutes(5))13 )14 ->each(fn ($report) => $report->process());15 } finally {16 $lock->release();17 }18}
toPrettyJson
aux collections
Ajout de la méthode Wendell Adriel a ajouté une méthode toPrettyJson()
, implémentée dans la plupart des endroits où la méthode toJson() existe, comme les collections, modèles, ressources JSON, paginations, instances Fluent et message bags. Voici un exemple provenant de la Pull Request #56697 utilisant des collections :
1// Avant2$collection = collect([1,2,3]);3$collection->toJson(JSON_PRETTY_PRINT);4 5// Après6$collection = collect([1,2,3]);7$collection->toPrettyJson();
En savoir plus
Pour aller plus loin avec Filament, voici quelques ressources utiles :
- Documentation
withHeartbeat
: https://laravel.com/docs/12.x/collections#method-with-heartbeat - Larave Starter Kits : https://laravel.com/docs/12.x/starter-kits
- Les Pull Requests : https://github.com/laravel/framework/pulls