La technologie PHP

1. Présentation

Le PHP est un langage de programmation essentiellement utilisé pour créer des pages Web dynamiques. Il est à l’origine de nombreux sites célèbres comme Facebook, Wikipedia ou Youtube et des applications comme Drupal et WordPress. Le PHP est utilisé par plus de 80 % des sites Internet pour les scripts côté serveur1 d’après le site W3Techs devant ASP.Net et Java.

À l’instar du Java, le PHP permet la programmation orientée objet avec des classes contenant des attributs, des méthodes et des instances de classes. Le PHP est souvent couplé à un serveur Apache et peut être hébergé sur les plateformes de type Unix et Windows: le même code peut être reproduit dans différents environnements.

L’exécution du code PHP dans le cadre d’un usage Internet est le suivant : le visiteur demande une page au moyen d’une requête HTTP au serveur qui identifie le code PHP en charge de la page, le soumet à un interprète PHP qui va traite et générer le code de la nouvelle page Web en HTML. Très souvent le PHP interroge également une base de données ou un système de fichiers et récupère le résultat.


Illustration 2.1: Fonctionnement du PHP

2. Historique et évolution

Le développement du PHP débute en 1994 avec Ramus Lerdorf qui à travers le Common Gateway Interface (CGI) a développé les deux premiers versions du langage PHP. Son objectif premier était de pouvoir travailler avec des formulaires et de se connecter aux bases de données. En 1997, Zeev Suraski et Andi Gutmans réécrit le parseur qui deviendra la base du PHP 3 sous le nom de PHP Hypertext Preprecessor (Préprocesseur hypertexte PHP en français). Ils fondent en 2000 l’entreprise Zend Technologies et le moteur de script open source le Zend Engines.

Le PHP 5 qui est la version PHP la plus utilisée aujourd’hui, est arrivée en 2004 avec le Zend Engines II. Elle améliore le support de la programmation orientée objet, ajoute l’extension PHP Data Objects (PDO) pour accéder aux bases de données, et apporte de nombreux gains de performance. Le PHP 6 a été abandonné par la communauté à cause de la complexité à intégrer l’Unicode UTF-16 et du peu intérêt que cela suscitait. Les autres fonctionnalités majeures initialement prévues dont les espaces de nom, ont été reversés dans les sous-versions 5.3 et 5.4 publiées respectivement en 2009 et 2010. Ces deux versions sont aujourd’hui utilisées par près de la moitié des serveurs dans le monde2.

2.1. Le PHP 7

Le PHP 7 et le Zend Engine 3 publiés fin 2015, proposent d’optimiser la performance du PHP en retenant une compatibilité quasi complète avec les versions précédentes. D’après le site Zend3, la performance double quasiment sur les CMS et frameworks PHP. Ces améliorations sont comparables à ceux de HHVM, la version PHP optimisée basée sur la compilation à la volée développée par Facebook4.

Concernant les incompatibilités, il s’agit de changements mineurs principalement de :

  • la suppression des fonctions déjà dépréciées : les tags de type ASP <%, <%= %>, les tags <script language=”php”, l’extension ereg à remplacer par l’équivalent preg, l’extension mysql à remplacer par l’équivalent mysqli

  • l’interprétation de la syntaxe uniforme des variables de gauche à droite : $person->$property[‘first’] sera interprété comme {$person→$property}[‘first’] au lieu de $person→{$property[‘first’]}. L’utilisation des accolades permet d’expliciter l’ordre qu’il faut interpréter.

  • l’affichage d’une erreur dans le cas des clauses default multiples. Dans le PHP 5, seul le dernier default était pris en compte.

  • Un changement dans la gestion existante des erreurs et des exceptions : La commande set_exception_handler est de type Throwable au lieu de Exception. Si cela ne devrait pas avoir d’impacts sur le code existant, il est important de l’avoir en tête dans le cas de la gestion des nouvelles exceptions dans PHP7. Ci-joint, un exemple :

<?php
// Code PHP 5 qui ne marchera plus
function handler(Exception $e) { … }
set_exception_handler(‘handler’);

// Code compatible PHP 5 et 7.
function handler($e) { … }

// Code compatible PHP 7 only.
function handler(Throwable $e) { … }
?>

Les nouveaux du PHP 7 sont les suivants :

  • de nouveaux opérateurs comme le spaceship <=> et le null coalesce ??

  • les types hints étendus aux scalaires c’est-à-dire les integers, floats, strings, and booleans et au return

Le détail des nouveautés du PHP 7 et des incompatibilités avec les versions précédentes sont décrites sur le site officiel5.

2.2. Migration et perceptives

La migration vers la version 7 du PHP dépend essentiellement des critères suivants:

  • Le besoin de meilleures performances, d’une utilisation plus réduite de la mémoire

  • Le besoin des nouvelles fonctionnalités et la volonté d’utiliser les nouveaux frameworks

  • L’absence d’utilisation des fonctionnalités dépréciées ou la facilité à recoder ces fonctionnalités

  • L’existence des outils de tests unitaires

  • La présence des paquets (.rpm, .deb…)

De plus, il convient de noter que les versions 5.5 et 5.6 du PHP garderont un support jusqu’à respectivement 6/2016 et 12/2018. Les composants PHP ont généralement un cycle de support de 3 ans après leur publication.

À noter que les grandes distributions Linux ne sont généralement pas fournies avec les dernières versions PHP. Il est nécessaire de passer par des tiers.

Le projet Webtatic Yum6 est un dépôt de composants web à jour pour CentOS/Redhat dont PHP et MySQL. Nous constatons un délai d’environ une semaine entre la publication du composant sur le site PHP.net et la mise à disposition de la version sur le site Webtatic. Par exemple les versions PHP 7.0.6, PHP 5.6.21 et 5.5.35 publiées le 28 avril 2016, ont eu leurs paquets PHP pour CentOS/Redhat 6 et 7, le 7 mai 20167.

Le site Deb.Sury.org8 fournit de nombreux composants à jour dont PHP pour Debian et Ubuntu. Via le dépôt de sources logicielles PPA9, il est possible de faire la mise à jour au PHP 5.5 5.6 et 5.7 pour les versions d’Ubuntu LTS 12.04, 14.04 et 16.04 ainsi que la version 15.10.

La technologie PHP restera pertinente sur au moins les cinq prochaines années en particulier avec plus du quart des sites Internet actuels sous WordPress10. La sortie du PHP 7 et le développement de frameworks PHP comme Symfony et Laravel contribuent en particulier à la modernisation du PHP. Si la part des applications écrites avec des nouveaux langages et frameworks (Node.js, Python, Ruby…) augmente, le PHP est encore la technologie de référence pour développer des applications serveur grâce à sa performance et sa sécurité

Références