PHP 7 vs PHP 5.x : quelles sont les différences ?
Le développement de PHP suit son court et il a été décidé en 2014 qu’il sauterait une version pour passer de la version 5.x à la version 7. Le processus de développement est relativement long. Si vous n’en avez pas encore entendu parlé, il est temps de rattraper votre retard.
Pourquoi PHP est-il passé de la version 5 à la version 7 ?
En juillet 2014, les contributeurs du projet PHP se sont prononcés sur un passage direct de PHP 5.x à PHP 7.x (voir le wiki du projet). En fait, PHP 6 a bien existé, mais il est resté à l’état de chantier. Cette version devait conduire à l’intégration de l’Unicode au langage (en vue de faciliter la manipulation de texte dans différentes langues). Mais face aux trop nombreuses difficultés techniques, l’initiative a été abandonnée. Les autres évolutions envisagées dans PHP 6 ont depuis été réintégrées à de nouvelles versions intermédiaires (PHP 5.3 et 5.4). C’est pour éviter la confusion qu’est née alors cette idée de passer directement à la version 7.
Enfin pour les partisans de PHP 7, le chiffre 6 a aussi trop souvent été associé à la notion d’échec dans le monde des environnements de développement web : « PHP 6 a été un échec ; Perl 6 a été un échec. Il est en fait associé à l’échec, même en dehors du monde des langages dynamiques :MySQL 6 existait, mais n’a jamais été publié. »
Sortie de PHP 7
La finalisation et l’implémentation des dernières fonctionnalités vont se faire entre Mars et Juin 2015. Une première version RC (Release Candidate) sera publiée courant Juin / Juillet 2015. Vous pourrez finalement enfin profiter de cette nouvelle version à partir d’Octobre, voire Novembre 2015.
Amélioration des performances
PHP 7 sera basé sur PHPNG (PHP Next-Gen) qui a été initialement développé par Zend pour améliorer son framework.
Le gain de performance est énorme. Il va de 25% à 70% selon les applications que vous utilisez. Ce gain se fait sans modifier une seule ligne de code. Il suffira de mettre à jour la version PHP de votre serveur pour en bénéficier.
Voici un exemple en nombre de requêtes par seconde pour la nouvelle version sera capable d’avaler face à son prédécesseur :
Les performances sont en constante évolution. Quand PHPNG a été publié pour la première fois, il fallait environ 9.4 milliards d’instructions CPU pour afficher la page d’accueil de WordPress. Actuellement, il n’en faut déjà plus que 2.6 milliards. C’est 72% de moins.
Nouveautés de PHP 7
Nouvel opérateur <=>
PHP 7 introduit un nouvel opérateur : expr <=> expr
Il retourne 0 si les 2 expressions sont égales, 1 si l’expression de gauche est plus grande et -1 si l’expression de droite est plus grande.
Voici quelques exemples :
Il peut notamment être utilisé pour classer une liste d’éléments.
Déclaration des fonctions
Il sera possible de définir le type de valeur que doit retourner la fonction.
Sémantique des entiers
Selon les plateformes qui exécutent PHP, les valeurs de certains entiers sont différents. L’idée est ici d’uniformiser les valeurs de ces entiers.
Suppression de tag
Certains tags vont être supprimés. J’en ai personnellement utilisé certains de cette liste. C’est de l’histoire ancienne.
- <% tag d’ouverture
- <%= tag d’ouverture avec echo
- %> tag de fermeture
- (<script\s+language\s*=\s*(php| »php »|’php’)\s*>)i tag d’ouverture
- (</script>)i tag de fermeture
Plus de support de l’hexadécimal
Il est possible actuellement d’utiliser des nombres hexadécimaux, sous forme de string, qui sont considérés comme des int. Par contre, quand on compare ces nombres avec de vrais int, le résultat est parfois farfelue. Encore une fois pour harmoniser tout ça, les hexadécimaux passent à la trappe.
Nouvel opérateur ??
Cet opérateur permet de gagner du temps lorsqu’on teste si une variable existe. Si elle existe, le contenu de cette variable est renvoyée, sinon l’opérateur renvoi une chaîne prédéfinie.
Modification du switch case
Avant, il était tout à fait possible d’avoir plusieurs ‘default’ dans un switch case. Aucune erreur n’était affichée alors que maintenant, votre script lèvera une erreur de type E_COMPILE_ERROR lors de son exécution.
D’autres modifications ont été implémentées. Si vous souhaitez voir la liste complète pour vous préparer, rendez-vous sur cette page.