Damien Seguy a publié un point d’étape utile sur PHP 8.6, attendu en version stable pour la fin 2026. À mi-parcours du cycle, la version compte déjà 7 RFC implémentées et 5 acceptées. Rien de spectaculaire pris isolément, mais un ensemble cohérent — et un dossier de fond qui rouvre : les generics.
Ce qui est déjà dans le pot (7 RFC implémentées)
clamp()— borne une valeur entre un min et un max, pour les entiers, flottants, chaînes et objetsDateTimeInterface. Fini lesmax(min(...))imbriqués.- Enums debuggables — les enums peuvent implémenter
__debugInfo()pour personnaliser la sortie devar_dump. - Enum
SortDirection— un enum natif non typé avec les casAscendingetDescending. - Divers — méthodes de réflexion sur l’accessibilité des propriétés,
mysqli_quote_string(), prise en charge du form feed danstrim(), et retrait du backend Oniguruma de mbstring.
<?php
// PHP 8.6 : clamp() natif
$volume = clamp($input, 0, 100); // int/float
$page = clamp($requested, 1, $maxPage); // borne la pagination
// avant 8.6
$volume = max(0, min(100, $input));Ce qui est acté mais pas encore livré (5 RFC acceptées)
- Optimisation des closures — inférence
staticautomatique et mise en cache des closures sans état : environ 80 % de gain sur des benchmarks synthétiques. - Application partielle de fonction v2 — la syntaxe
?pour un argument et...pour le reste, adoptée à l’unanimité (33 voix contre 0). - Endianness des flottants dans
pack()/unpack(), et un durcissement des politiques de validation d’entrée.
<?php
// Application partielle de fonction v2
$trim = trim(...); // référence de fonction
$clean = strtoupper(trim(?)); // ? = argument laissé libre
$names = array_map(ucfirst(?), $rawNames);Envie d'aller plus loin ?
Réserver un appel découverte →Le retour des generics : « bound-erased »
C’est le sujet qui anime la communauté. La nouvelle proposition, dite « Bound-Erased Generic Types », tranche un vieux débat en faveur du pragmatisme : les paramètres de type sont effacés vers leur borne à l’exécution (erasure), et la forme d’origine n’est conservée que pour la Réflexion. Autrement dit, la validation reste du ressort de l’analyse statique (PHPStan, Psalm), pas du moteur au runtime.
Notre analyse
L’approche bound-erased est la bonne. Depuis des années, l’écosystème PHP fait déjà des generics « pour de faux » via les annotations @template de PHPStan/Psalm, et ça marche remarquablement bien en pratique. Formaliser cette réalité dans la syntaxe du langage — sans imposer un coût de vérification au runtime qui aurait plombé les performances — c’est reconnaître que le typage fort de PHP moderne vit d’abord dans l’outillage statique. Pour une équipe qui prend déjà PHPStan au sérieux, ce serait un gain de lisibilité sans rupture.
Le reste (clamp, closures optimisées, application partielle) relève de la finition qui rend le quotidien plus agréable. Rien qui justifie de précipiter une migration, mais un socle qui confirme la trajectoire d’un PHP à la fois plus rapide et plus expressif. Rendez-vous fin 2026 pour la GA.
Sources : « PHP 8.6 : ce qui est dans le pot, ce qui se joue encore » — Damien Seguy, relayé par Human Coders News.
Envie d'aller plus loin ?
Discutons de votre projet et voyons comment je peux vous aider.