PHP 7.1 : la route vers PHP 7.2 et PHP 8.0
15 septembre 2016 —This post is also available in English.
Ceci est le dixième article d’une série à propos de PHP 7.1.
PHP 7.1 n’est que la seconde version mineure de la branche PHP 7, mais les esprits commencent déjà à penser à la suite : la version mineure suivante, PHP 7.2 ; et la prochaine version majeure, ce qui pourrait être PHP 8.0.
Des suppressions pour PHP 8.0
Il ne s’agit pas encore de réflexions très profondes dans le cœur du moteur, mais de commencer dès maintenant à ajouter quelques E_DEPRECATED
ou E_NOTICE
sur des fonctionnalités déconseillées de PHP 7.x, en vue de les supprimer pour PHP 8.0.
Option eval de mb_ereg_replace()
Le modificateur /e
de la fonction preg_replace()
a été supprimé avec PHP 7.0 (‣RFC), mais il est resté pour la fonction mb_ereg_replace()
.
Pour uniformiser, utiliser ce modificateur dangereux en PHP 7.1 pour les fonctions mb_ereg_replace()
et mb_eregi_replace()
lèvera désormais un avertissement de niveau E_DEPRECATED
.
À la place, passez par la fonction mb_ereg_replace_callback()
.
Ce modificateur devrait ensuite être supprimé, pour PHP 8.0.
‣ La RFC : Deprecate mb_ereg_replace()
eval option
La fin de mcrypt ?
L’extension mcrypt
est basée sur une bibliothèque qui n’est plus maintenue depuis des années – ce qui est quelque peu problématique, considérant qu’elle est fortement liée à la sécurité !
Au moment de PHP 7.0, il avait donc été proposé de supprimer cette extension de PHP. Mais beaucoup de développeurs l’utilisant encore, cela n’avait finalement pas été fait.
Pour laisser plus de temps aux développeurs et rendre la migration moins abrupte, l’extension mcrypt
sera marquée comme obsolète à partir de PHP 7.1 : l’utiliser mènera à des avertissements de niveau E_DEPRECATED
.
L’extension mcrypt
devrait ensuite être supprimée pour PHP 8.0.
‣ La RFC : Deprecate (then Remove) Mcrypt
Et pour PHP 7.2 ?
La sortie de PHP 7.1 approchant, cela fait plusieurs mois qu’il n’est plus possible d’ajouter de nouvelle fonctionnalité pour cette version.
Sans surprise, plusieurs idées ont déjà commencé à être évoquées, pour ce qui pourrait devenir la version suivante : PHP 7.2.
Vous trouverez ci-dessous quelques RFC correspondant à certaines de ces idées.
Comme toujours, quelques-unes d’entre elles iront jusqu’au processus de votes, une partie seulement seront acceptées, alors qu’un nombre important seront finalement oubliées :
- New operator for context-dependent escaping – celle-ci a déjà été rejetée.
- E_WARNING for invalid container read array-access
- Argon2 Password Hash
- Pipe Operator – celle-ci avait initialement été discutée pour PHP 7.1, mais l’idée avait besoin de murir un peu plus.
- Null Coalesce Equal Operator – et celle-là a déjà été acceptée, du temps de PHP 7.1 ; mais l’implémentation n’était pas terminée. Elle arrivera peut-être, donc, pour 7.2 ?
Je me permets d’insister encore une fois : ce n’est pas parce qu’une RFC a été rédigée que l’idée correspondante mènera à une nouveauté pour PHP !