Laravel 12.42 : Attributs HTTP, Enums dans les traductions et vérification d’index
La version 12.42 de Laravel, publiée le 9 décembre 2025, enrichit le framework avec des fonctionnalités pratiques pour le client HTTP, le système de traduction et le Schema Builder. Cette release améliore la traçabilité des requêtes HTTP et simplifie la gestion des migrations.
Contexte de la release
Cette version mineure s’inscrit dans la continuité des améliorations apportées à Laravel 12. L’équipe de développement, menée par Taylor Otwell, continue d’affiner l’expérience développeur avec des ajouts ciblés. Parmi les 22 contributions fusionnées, trois fonctionnalités majeures se démarquent : les attributs sur les requêtes HTTP, le support des Enums dans le Translator, et les nouvelles méthodes conditionnelles du Schema Builder.
Attributs sur les requêtes HTTP Client
Luke Kuzmish a contribué une nouvelle méthode withAttributes() sur la classe PendingRequest. Elle permet d’attacher des données personnalisées à une requête HTTP, récupérables ensuite via la réponse.
Cette fonctionnalité répond à un besoin courant : identifier ou taguer des requêtes dans un contexte de pool ou de batch HTTP.
use Illuminate\Support\Facades\Http;
// Définition d'attributs personnalisés sur la requête
$response = Http::withAttributes(['source' => 'api-externe', 'priority' => 'high'])
->get('https://api.example.com/users');
// Récupération des attributs depuis la réponse
$attributes = $response->attributes();
// Résultat : ['source' => 'api-externe', 'priority' => 'high']
Ces attributs facilitent le débogage et le logging contextuel. Vous pouvez désormais tracer l’origine d’une requête sans modifier le payload ou les headers.
Cas d’usage avec les pools HTTP
La méthode newRequest() ajoutée aux classes Pool et Batch simplifie la création de requêtes anonymes :
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\Pool;
// Création de requêtes dans un pool sans nommage obligatoire
$responses = Http::pool(function (Pool $pool) {
$pool->newRequest()
->withAttributes(['type' => 'user-data'])
->get('https://api.example.com/users');
$pool->newRequest()
->withAttributes(['type' => 'product-data'])
->get('https://api.example.com/products');
});
Avant cette version, la méthode as() était obligatoire pour nommer chaque requête du pool. Cette contrainte disparaît avec newRequest().
Support des Enums dans les traductions
Hossein Hosni a ajouté le support des Enums PHP dans les remplacements des traductions. Les valeurs d’Enum sont automatiquement converties en leur représentation textuelle.
// Définition d'un Enum pour les mois
enum Month: string
{
case January = 'January';
case February = 'February';
case March = 'March';
}
// Utilisation dans une traduction
// Fichier lang/fr/messages.php : 'release_date' => 'Laravel 12 est sorti en :month 2025'
echo __('messages.release_date', ['month' => Month::February]);
// Résultat : "Laravel 12 est sorti en February 2025"
Cette amélioration évite les appels manuels à ->value sur les Enums backed. Le code devient plus concis et les Enums s’intègrent naturellement dans le système de traduction.
Vérification conditionnelle des index
Jack Bayliss a contribué deux méthodes au Schema Builder : whenTableHasIndex() et whenTableDoesntHaveIndex(). Elles permettent d’exécuter du code conditionnel basé sur l’existence d’un index.
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
// Avant : vérification manuelle
public function up(): void
{
if (!Schema::hasIndex('products', 'name')) {
Schema::table('products', function (Blueprint $table) {
$table->index('name', 'idx_products_name');
});
}
}
// Après : syntaxe fluide avec callback
public function up(): void
{
Schema::whenTableDoesntHaveIndex('products', 'name', function (Blueprint $table) {
$table->index('name', 'idx_products_name');
});
}
La méthode accepte également un quatrième paramètre pour spécifier le type d’index :
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
// Vérification d'un index unique spécifiquement
Schema::whenTableDoesntHaveIndex('users', 'email', function (Blueprint $table) {
$table->unique('email', 'idx_users_email_unique');
}, 'unique');
Ces méthodes rendent les migrations plus robustes et idiomatiques, particulièrement utiles lors de refactoring de base de données.
Autres améliorations notables
Cette version inclut plusieurs corrections et ajustements :
- Valeurs flottantes dans les helpers de durée : les méthodes
minutes(),hours(), etc. acceptent désormais des valeurs décimales pour CarbonInterval - Support de PHPUnit 12.5 : compatibilité avec la dernière version majeure de PHPUnit
- Nouveau composant
illuminate/reflection: extraction du code de réflexion depuisilluminate/supportpour une meilleure modularité - Options
--quietet--silentrespectées dansqueue:work - Correction de la validation Password avec les règles
requiredetsometimes
Mise à jour vers Laravel 12.42
Pour bénéficier de ces nouveautés, mettez à jour vos dépendances :
composer update laravel/framework
Vérifiez ensuite la version installée :
php artisan --version
# Laravel Framework 12.42.0
Points d’attention
- Les attributs HTTP ne sont pas transmis au serveur distant. Ils restent côté client pour le contexte applicatif.
- Le support des Enums dans le Translator nécessite PHP 8.1+ (support natif des Enums).
- Les méthodes
whenTableHasIndex()etwhenTableDoesntHaveIndex()fonctionnent avec tous les drivers de base de données supportés.
Ressources
À propos de Laravel Actu
Développeur passionné par Laravel et son écosystème.
Voir tous les articles