Laravel 9.4 est désormais release depuis le 9 mars, toutes les modifications sont disponibles ici mais voyons-les plus importantes de cette nouvelle version mineure.
VerifyCsrfToken configurable
Principale amélioration de cette 9.4, le token CSRF est désormais entièrement configurable grace à cette PR de Jaggy !
Pour en profiter, rien de plus simple, il vous suffit d'ajouter cette nouvelle méthode au middleware app\Http\Middleware\VerifyCsrfToken
:
1use Symfony\Component\HttpFoundation\Cookie; 2 3class VerifyCsrfToken extends Middleware { 4 protected function newCookie($request, $config) 5 { 6 return new Cookie( 7 "XSRF-TOKEN-{$request->user()->type}", 8 $request->session()->token(), 9 $this->availableAt(60 * $config['lifetime']),10 $config['path'],11 $config['domain'],12 $config['secure'],13 false,14 false,15 $config['same_site'] ?? null,16 );17 }18}
Vous pourrez ainsi avoir un contrôle total sur les particularités du cookie CSRF, en modifiant par exemple sa durée de vie, sa visibilité ...
Cela peut s'avérer utile dans les applications complexes gérants plusieurs domaines et vous prévenir de l'erreur "419 Page Expired".
Nouvelle méthode soleValue
Laravel 8.23 ajoutait une nouvelle méthode sole
permettant de s'assurer qu'un seul item était trouvable par une requête du Query Builder.
1DB::table('products')->where('ref', '#123')->sole();
Une MultipleRecordsFoundException
ou une NoRecordsFoundException
sera lancée si respectivement plusieurs ou aucun item correspond à la requête.
Matthew Hailwood enrichit cette fonctionnalité d'une nouvelle méthode soleValue
permettant de récupérer directement une valeur du résultat d'un sole
.
1DB::table('products')->where('ref', '#123')->soleValue('id');
L'affichage des Mutex
Dorénavant la commande artisan schedule:list
affichera clairement les commandes actuellement "mutex" depuis cette PR de Madman-81.
1$ php artisan schedule:list2+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+3| Command | Interval | Description | Next Due | Has Mutex |4+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+5| '/usr/bin/php8.0' 'artisan' mycommands:something | */2 * * * * | Process something | 2022-03-03 10:22:00 +00:00 | Yes |6| '/usr/bin/php8.0' 'artisan' mycommands:otherthing | */2 * * * * | Process otherthing | 2022-03-03 10:22:00 +00:00 | |7+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+
Le mutex est un mode d'exécution de vos commandes qui vous assure qu'une même commande ne peut être exécutée deux fois simultanément.
Cela s'avère utile quand l'exécution d'une commande prend du temps à se finaliser afin d'éviter de surcharger votre serveur.
Ce comportement n'est pas celui par défaut de Laravel, il est nécessaire de configurer votre commande avec la méthode withoutOverlapping
dans votre kernel.
1$schedule->command('mail:send')->withoutOverlapping();
A lire
Autres articles de la même catégorie
Découvrez le design pattern Composite dans Laravel
Le pattern composite facilite la création d'objets dans des arborescences, découvrez comment l'utiliser !
Les nouveautés PHP 8.4
Un coup d'oeil aux nouveautés apportées par la dernière version de PHP
Retour sur la conférence API Platform 2024
Ce 19 et 20 septembre 2024 a eu lieu la 4e édition de l'Api Platform Conference et nous y étions !