Depuis son lancement officiel en fin d’année dernière PHP 7 commence à se trouver un peu partout chez les hébergeurs. On a encore à disposition PHP 5.6 mais vu le gain de performance beaucoup d’hébergeurs le mettent en avant.
Gain de performance
La promesse de ZEND avec la version 7 de PHP était d’avoir une version PHP plus rapide. C’est réussi.
Voici un comparatif de WordPress 3.6 et 4.1 lancés sous PHP 5.6, HHVM 3.7 (le PHP de Facebook) et PHP 7. La tableau montre le nombre de requêtes exécutées par secondes : plus c’est élevé mieux c’est !
On voit nettement le gain apporté par cette nouvelle version de PHP.
Le Journal du Net a testé PHP 7 sur sa page d’accueil. Le résultat est le suivant : -46% en consommation de mémoire, -44% de temps d’exécution CPU. Le gain est vraiment très important. Pour comparaison le gain entre php 4 et php 5.1 était d’environ 30%.
Nouveautés de PHP 7
Je ne vais pas tout détailler, vous pouvez voir toutes le nouveautés et les changements sur le site de php.
Voici les plus importantes :
Nouvel opérateur spaceship <=>
Il retourne 0 si les 2 expressions sont égales, -1 si l’expression de droite est plus grande et 1 si l’expression de gauche est plus grande.
Voici quelques exemples :
echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 echo [] <=> []; // 0 echo [1, 2, 3] <=> [1, 2, 3]; // 0 echo [1, 2, 3] <=> []; // 1 echo [1, 2, 3] <=> [1, 2, 1]; // 1 echo [1, 2, 3] <=> [1, 2, 4]; // -1
Nouvel opérateur ??
Si la variable testée existe, l’opérateur retourne sa valeur, sinon la valeur prédéfinie après l’opérateur.
$prenom = $_GET['utilisateur'] ?? 'personne'; // $prenom prend la valeur du paramètre GET si il existe, sinon il devient 'personne' $x = NULL; $y = NULL; $z = 3; var_dump($x ?? $y ?? $z); // int(3)
Typage des retours de fonctions
On peut spécifier (optionnel) le type de la valeur de retour d’une fonction :
public function isValidUtilisateur(int $id) : bool { return isset($this->utilisateur[$id]) ? true : false; }
Retro-compatibilité
Avec cette nouvelle version certains éléments déjà en deprecated en php 5 sont supprimés. En voici une liste non exhaustive :
- short tag asp : les short tags <% sont maintenant ignorés
- balise script : la balise <script language=”php”> </script> est ignorée
- toutes le fonctions “mysql_xxxxx” ne sont plus supportées
- toutes les ereg : ereg, ereg_replace, eregi,… ne sont plus supportées
Conclusion
Avec de tels gains de performance, PHP7 va sans aucun doute être accepté beaucoup plus rapidement que php 5 sorti en 2004. En effet beaucoup d’hébergeurs le mettent en avant afin de rentabiliser au mieux leurs infrastructures mutualisées. Attention toutefois avant de passer de 5.6 à 7 sans tester. En effet, la suppression de certaines fonctions risquent de vous demander de modifier une partie de votre code, typiquement tous les sites qui ont déjà du vécu auront tendance à appeler les fonctions mysql_xxxx qui ne sont donc plus supportées, et de fait vous pourriez vite vous retrouver avec un site vide !