Laravel 12.41 : Nouveau template email, helpers lazy objects et proxy
Laravel 12.41.0 débarque avec un template email complètement repensé, des helpers pour manipuler les lazy objects de PHP 8.4, et des helpers de durée supplémentaires. Cette version améliore aussi le client HTTP et facilite les déploiements.
Template email modernisé
Le template par défaut des emails Laravel fait peau neuve. Exit le design vieillissant, place à un rendu plus épuré et professionnel.
Voici le avant / après (respectivement à gauche et à droite) :

Cette modification impacte tous les emails générés via les notifications Markdown et les Mailables. Le nouveau design s’adapte mieux aux différents clients mail et offre une meilleure lisibilité.
Helpers lazy() et proxy() pour les objets paresseux
PHP 8.4 a introduit les lazy objects, mais leur API native reste verbeuse. Tim MacDonald propose deux helpers qui simplifient radicalement leur utilisation.
Le helper lazy()
Utilisez lazy() quand vous contrôlez l’instanciation de l’objet :
use function Illuminate\Support\lazy;
use App\Services\HeavyService;
// L'objet n'est instancié qu'au premier accès
$service = lazy(HeavyService::class, fn () => [$config, $logger]);
// Avec des paramètres nommés
$service = lazy(HeavyService::class, fn () => [
'logger' => $logger,
'config' => $config,
]);
Le helper proxy()
Privilégiez proxy() quand une factory tierce gère la création :
use function Illuminate\Support\proxy;
use App\Models\Report;
// Création différée via une factory
$report = proxy(Report::class, fn (): Report => ReportFactory::generate($params));
L’intérêt ? Réduire l’empreinte mémoire et améliorer les performances en retardant l’initialisation d’objets coûteux jusqu’à leur utilisation effective.
Helpers de durée supplémentaires : milliseconds, weeks et months
La version 12.40 avait introduit les helpers seconds(), minutes(), hours(), days() et years(). Laravel 12.41 complète cette famille avec trois nouveaux venus.
use function Illuminate\Support\milliseconds;
use function Illuminate\Support\weeks;
use function Illuminate\Support\months;
// Définir un timeout de 500 millisecondes
$timeout = milliseconds(500);
// Période de rétention de 2 semaines
$retention = weeks(2);
// Abonnement de 6 mois
$subscription = months(6);
Ces fonctions retournent des instances CarbonInterval, parfaitement compatibles avec les TTL de cache, les délais de retry HTTP, ou les configurations de tâches planifiées.
use Illuminate\Support\Facades\Cache;
use function Illuminate\Support\weeks;
// Cache d'une API externe pendant 2 semaines
$data = Cache::remember('api-data', weeks(2), function () {
return Http::get('https://api.example.com/data')->json();
});
Méthode throwUnless() sur les réponses HTTP
Le client HTTP gagne la méthode throwUnless() sur l’objet Response. Elle complète throwIf() pour une gestion d’erreurs plus expressive.
use Illuminate\Support\Facades\Http;
$response = Http::get('https://api.example.com/users/1');
// Lance une exception si la condition est fausse ET qu'une erreur HTTP survient
$response->throwUnless($response->json('active') === true);
// Avec une closure pour plus de contrôle
$response->throwUnless(fn ($response) => $response->json('status') === 'valid');
Commande artisan:reload pour les déploiements
Barry vd. Heuvel apporte une nouvelle commande reload et la possibilité pour les services d’enregistrer leurs propres commandes de rechargement.
// Dans un ServiceProvider
public function boot()
{
// Enregistre une commande à exécuter lors du reload
$this->reloads('reverb:restart');
}
Cette fonctionnalité centralise les opérations post-déploiement : redémarrage de Reverb, purge de cache Horizon, etc.
Correctifs et améliorations diverses
- Cache Redis : Correction du flush des caches tagués quand le préfixe contient un tiret
- - Commande cache:clear : Le code de sortie reflète maintenant correctement les échecs
- Middleware TrimStrings : Support des patterns wildcard pour exclure des champs
- Str::substrReplace() : Désormais compatible multibyte (UTF-8)
Points d’attention
- Les helpers
lazy()etproxy()nécessitent PHP 8.4 minimum - Le nouveau template email s’applique automatiquement – vérifiez le rendu de vos emails existants
- La commande
reloadest optionnelle et ne modifie pas le comportement par défaut
Mise à jour
Pour bénéficier de ces nouveautés :
composer update laravel/framework
Vérifiez que votre composer.json autorise les versions ^12.41.
Ressources
À propos de Laravel Actu
Développeur passionné par Laravel et son écosystème.
Voir tous les articles