PHP poursuit sa mue. Entre nouvelles fonctions, dépréciations ciblées et ruptures assumées, les versions 8.5 et 9.0 dessinent une trajectoire claire : renforcer la fiabilité du code et simplifier la vie des développeurs. Focus sur ce qui change, ce qui casse, et surtout ce que vous allez adorer.
PHP 8.5 : des améliorations ciblées et utiles au quotidien
Attendue pour le 20 novembre 2025, PHP 8.5 reste fidèle à la philosophie des versions intermédiaires : stabilité, ajout de fonctions utiles, et premiers jalons vers des changements plus profonds.
Plus de contrôle sur les erreurs
Deux nouvelles fonctions font leur apparition : get_exception_handler()
et get_error_handler()
. Elles permettent d’interroger dynamiquement les gestionnaires d’erreurs et d’exceptions actuellement en place. Idéal pour les frameworks et CMS modulaires qui veulent ajuster leur logique de gestion sans casser l’existant.
Encore plus utile : les erreurs fatales affichent désormais un stack trace complet. Un gain immédiat pour le debug, notamment dans les chaînes d'appels complexes.
De nouvelles fonctions bien pensées
L’ajout de curl_multi_get_handles()
facilite le pilotage des sessions multiples avec cURL. Elle permet d’itérer directement sur les handles associés à un multi handle sans manipulation détournée.
Autre nouveauté discrète mais précieuse : la constante PHP_BUILD_DATE
, utile en audit ou pour vérifier des binaires PHP lors de déploiements automatisés.
Un ménage nécessaire
Les constantes MHASH_*
, héritées d’une époque révolue, sont officiellement dépréciées. L’objectif est clair : forcer les développeurs à basculer vers des mécanismes de hachage modernes et sécurisés via l’extension hash
.
PHP 9.0 : rupture assumée, compatibilité en question
Avec PHP 9.0, l’équipe de développement ne fait plus de compromis. Cette version actera plusieurs changements de fond. À la clé : un langage plus prévisible, mais qui cassera du code.
Typage strict et fin des approximations
PHP 9.0 ne tolérera plus certaines pratiques ambiguës. Exemple : incrémenter une chaîne comme 'a9'
provoquera une erreur. Il faudra passer par str_increment()
, une fonction dédiée. Autre exemple parlant : accéder à une variable non définie générera désormais une erreur, là où un simple notice
suffisait avant.
Ce renforcement des règles vise à éviter les comportements implicites, sources fréquentes de bugs silencieux.
Fin des interpolations complexes
La syntaxe ${var}
ou ${expr}
en interpolation disparaît. PHP impose désormais les accolades simples et explicites ({$var}
), ce qui simplifie l’analyse du code et évite les confusions d’interprétation.
Nettoyage des interfaces obsolètes
L’interface Serializable
, peu utilisée et souvent mal implémentée, est définitivement abandonnée. Place aux méthodes magiques __serialize()
et __unserialize()
, introduites depuis PHP 7.4. Plus claires, plus typées, elles favorisent un code plus stable.
Gestion d’erreur plus rigoureuse
Des fonctions internes qui acceptaient implicitement null
(comme strlen()
) lèveront désormais une TypeError
. Fini les comportements « tolérants » : PHP 9.0 exige un respect strict des types attendus.
Autre changement notable : unserialize()
lancera une exception dédiée (UnserializationFailedException
) en cas d’échec. Une avancée vers une gestion des erreurs centralisée et plus fiable.
Signatures de fonctions et APIs clarifiées
PHP 9.0 poursuit une démarche de simplification des APIs :
- Les fonctions « multi-usages » comme
array_keys()
seront scindées :array_keys_filter()
prendra le relais pour les cas spécifiques. Résultat : des signatures plus lisibles, une intention plus claire. - Les objets
DatePeriod
disposeront d’une méthode dédiée à l’analyse des formats ISO 8601 (createFromISO8601String()
), séparant clairement les cas d’usage.
Côté classes, les constructeurs et destructeurs (__construct
, __destruct
) ne pourront plus retourner de valeur. PHP déclenchera une erreur fatale si un return
est utilisé. Là encore, l’objectif est de rendre les comportements prévisibles et uniformes.
Comment se préparer sans subir la version PHP 9.0 ?
Anticiper PHP 9.0 ne relève pas d’un luxe, mais d’une nécessité. Plusieurs stratégies peuvent être mises en place dès aujourd’hui pour garantir une transition sans douleur.
- Auditez vos projets : repérez l’usage de constantes dépréciées, de typages approximatifs ou de fonctions tolérantes aux erreurs.
- Modernisez vos pratiques : adoptez dès maintenant les méthodes
__serialize()
, les types de retour explicites, et bannissez les interpolations complexes. - Surveillez les RFCs : l’écosystème PHP évolue vite. Lire les discussions sur les futures décisions vous donnera une longueur d’avance.
- Contribuez et testez : télécharger les versions alpha/beta vous permettra de tester vos projets avant la sortie officielle, d’identifier les points de friction et d’anticiper les correctifs.
PHP 8.5 et 9.0 : vers un PHP plus professionnel, moins permissif
L’évolution de PHP ne se résume pas à des nouveautés techniques. Elle marque un virage culturel : celui d’un langage qui se débarrasse des héritages flous, au profit d’un socle robuste, lisible et sécurisé.
Pour les développeurs exigeants, ces versions sont une opportunité — pas une contrainte. Mieux vaut s’y adapter maintenant que subir les ruptures demain.