Menu
Dossiers

PHP 8.6 RC3 : sessions durcies, clamp() et application partielle avant la version stable

PHP 8.6 entre dans sa dernière ligne droite. L’équipe du langage a publié le 8 octobre 2026 la troisième version candidate, PHP 8.6.0 RC3, et annonce la suivante, RC4, pour le 22 octobre, selon l’annonce officielle sur php.net. Le message est clair : cette version sert aux tests, pas à la production. C’est donc le bon moment pour faire tourner vos projets dessus et repérer ce qui casse avant la sortie stable.

Petite curiosité de ce cycle : il n’y a jamais eu de RC1. Une erreur d’empaquetage a conduit l’équipe à passer directement à la RC2, publiée le 24 septembre, comme l’explique le billet de blog lié depuis php.net.

Ce qui peut casser : les changements incompatibles #

Le fichier UPGRADING de la RC3 détaille les ruptures de compatibilité. Plusieurs d’entre elles concernent du code très courant.

À lire Patch .NET d’octobre : .NET 8 et .NET 9 en fin de support le 10 novembre

Des sessions plus strictes par défaut

C’est sans doute le changement le plus visible pour les applications web. Trois réglages de session changent de valeur par défaut : session.use_strict_mode passe à 1, session.cookie_httponly passe à 1 et session.cookie_samesite vaut désormais "Lax". Ce sont des réglages que les guides de sécurité recommandent depuis longtemps. Mais une application qui comptait sur un cookie de session lisible en JavaScript, ou envoyé lors de requêtes intersites, devra soit être adaptée, soit fixer explicitement l’ancienne valeur dans sa configuration.

trim() et unpack() changent de comportement

Les fonctions trim(), ltrim() et rtrim() retirent désormais aussi le saut de page (\f) dans leur liste de caractères par défaut. L’effet sera invisible pour la plupart des projets, mais un traitement de texte brut qui conservait volontairement ce caractère sera concerné.

Côté unpack(), un < ou un > placé après un code de format est maintenant lu comme un modificateur d’ordre des octets. Un format de la forme "s<value" produit ainsi la clé "value". Si vous décodez des formats binaires, relisez vos chaînes de format.

Curl, FTP, DOM et SOAP plus stricts

Plusieurs extensions lèvent désormais des erreurs là où elles toléraient des valeurs douteuses. Avec curl, une fonction de rappel CURLOPT_READFUNCTION qui renvoie autre chose que 0, CURL_READFUNC_ABORT ou CURL_READFUNC_PAUSE provoque une ValueError. Les fonctions FTP non bloquantes comme ftp_nb_get() lèvent une Error si un transfert est déjà en cours. Dans DOM, les propriétés documentées en lecture seule, comme DOMNode::$nodeType, utilisent maintenant la visibilité asymétrique. Enfin, l’option classmap de SOAP refuse les tableaux à clés entières.

À lire Node.js 26 passe en LTS le 28 octobre : faut-il migrer depuis Node 24 ?

Les nouveautés qui vont servir au quotidien #

clamp(), enfin dans le cœur du langage

Combien de projets ont leur propre fonction pour borner une valeur entre un minimum et un maximum ? PHP 8.6 ajoute clamp(), qui renvoie la valeur si elle se trouve dans l’intervalle, et la borne la plus proche sinon. Un petit ajout, mais qui fera disparaître beaucoup de code utilitaire dupliqué.

L’application partielle de fonctions

L’application partielle de fonctions devient une fonctionnalité du langage. Elle permet de fixer une partie des arguments d’une fonction pour obtenir une nouvelle fonction, prête à être passée en rappel. Les développeurs habitués aux styles fonctionnels y verront un moyen de réduire les fermetures écrites à la main.

Readonly, enums et attributs

Les propriétés readonly peuvent maintenant déclarer une valeur par défaut, ce qui simplifie bon nombre de constructeurs. L’attribut #[\Override] s’applique désormais aussi aux constantes de classe, y compris aux cas d’énumération. Et les enums peuvent définir la méthode magique __debugInfo() pour contrôler leur affichage au débogage.

Durées, flux et polling

Trois ajouts visent les applications plus techniques. Une nouvelle classe Time\Duration, accompagnée de Time\TimeException, représente des durées. Une API d’erreurs de flux apparaît avec stream_last_errors() et stream_clear_errors(). Enfin, une API de polling, autour de Io\Poll\Context et Io\Poll\Watcher, ouvre la voie à des boucles d’événements écrites en PHP natif.

À lire Squoosh : Comment optimiser vos images en ligne facilement avec cet outil open source

Comment se préparer d’ici la sortie stable #

La démarche la plus rentable consiste à ajouter PHP 8.6 RC3 à votre intégration continue dès maintenant, à côté de votre version de production. Les tests feront ressortir les ruptures liées à trim(), à unpack() ou aux extensions. Pour les sessions, l’audit est plus simple : vérifiez si votre code ou vos scripts front lisent le cookie de session, et si vos parcours reposent sur des requêtes intersites.

Les gestionnaires de contenu et les frameworks font le même travail de leur côté, et il est prudent d’attendre que vos dépendances annoncent leur compatibilité avant toute bascule en production. Les sources de la RC3 sont disponibles sur les serveurs de téléchargement de PHP, et les bogues se signalent sur le dépôt GitHub du projet.

KawaWeb est édité de façon indépendante. Soutenez la rédaction en nous ajoutant dans vos favoris sur Google Actualités :

Dans la même rubrique : Développement & code

En savoir plus : forfaits de référencement Google · consultant SEO