PHP 8.6 est prévu pour le 19 novembre 2026 et mise sur l'ergonomie développeur : nouveaux outils de programmation fonctionnelle, petites corrections du langage, meilleure réflexion et une longue liste de déprécations préparant les futures versions majeures.
La fonctionnalité phare est l'application partielle de fonctions (PFA). Grâce au marqueur ?, toute fonction peut devenir un callable partiellement appliqué : $makeSlug = str_replace(' ', '-', ?); puis $makeSlug('Hello World') donne « Hello-World ». La PFA se combine avec l'opérateur pipe, par exemple 'Hello World' |> str_replace(' ', '-', ?) |> strtolower(...) qui produit « hello-world ».
Les propriétés readonly peuvent désormais avoir des valeurs par défaut, par ex. public readonly string $name = '2026-01-01_create_books_table'; — auparavant impossible. C'est particulièrement utile avec les property hooks introduits en PHP 8.4, où les valeurs immuables par défaut font partie du contrat d'une interface.
Une nouvelle API de polling bas niveau améliore les internes de PHP comme PHP-FPM, la gestion des signaux et Zend Thread Safety (ZTS), et reste accessible au code utilisateur. Des bibliothèques comme ReactPHP et Amp peuvent l'utiliser à la place de stream_select(). L'API n'introduit délibérément ni async/await ni boucle d'événements ; c'est une meilleure abstraction des mécanismes du système comme epoll et WSAPoll, améliorant la scalabilité des applications à forte concurrence.
L'assistant clamp(), attendu de longue date, est intégré : clamp($value, 0, 100) remplace max(0, min(100, $value)). clamp(101, 0, 100) renvoie 100, clamp(-5, 0, 100) renvoie 0. La fonction accepte aussi les chaînes, les objets DateTime et toute valeur comparable.
La réflexion gagne les méthodes isReadable() et isWriteable(), permettant aux frameworks de déterminer l'accessibilité des propriétés selon la portée — utile pour les propriétés readonly, les property hooks et les setters privés. Les doc comments peuvent désormais être placés directement sur les paramètres, et ReflectionParameter::getDocComment() les expose. Un nouvel enum intégré SortDirection avec les cas Ascending et Descending est ajouté ; les fonctions de tri du cœur ne le gèrent pas encore, mais les bibliothèques peuvent l'adopter dès maintenant.
Les valeurs par défaut des sessions sont renforcées : session.use_strict_mode = 1, session.cookie_httponly = 1 et session.cookie_samesite = Lax. Cela protège les nouvelles installations contre la fixation de session, l'accès JavaScript aux cookies et l'usage inter-sites non voulu ; les applications reposant sur des POST inter-sites ou un accès côté client aux identifiants de session devront peut-être ajuster leur configuration. Les enums prennent désormais en charge __debugInfo() pour personnaliser la sortie de var_dump().
Déprécations notables : return dans un bloc finally ; les identifiants let, is, namespace, readonly (comme nom de fonction) et _ (réservés pour de futures fonctionnalités) ; les anciens alias is_double(), is_integer(), is_long() et doubleval() au profit de is_float(), is_int() et floatval() ; la modification de propriétés sur des objets non liés et l'appel de méthodes statiques via des instances par réflexion ; spl_classes(), spl_object_hash(), les méthodes CSV de SplFileObject, mysqli::stmt_init() et mysqli_get_charset() ; ainsi que les valeurs de retour des constructeurs et destructeurs.
Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.