## Histoire de PHP

### PHP Tools, FI, Construction Kit, et PHP/FI

PHP, tel qu'il est connu aujourd'hui, est le successeur d'un produit appelé PHP/FI. Créée en 1994 par Rasmus Lerdorf, la toute première incarnation de PHP était un simple jeu de binaires CGI écrits en langage C. Originairement utilisée pour suivre les visiteurs de son curriculum vitae en ligne, il nomme cette suite de scripts "Personal Home Page Tools" (ndt : Outils pour page personnelle), plus fréquemment appelée "PHP Tools". Au fil du temps, de plus en plus de fonctionnalités sont demandées, et Rasmus ré-écrit les outils PHP, produisant ainsi une implémentation plus large et plus riche. Ce nouveau modèle était capable d’interagir avec une base de données, mais aussi, fournissait un framework permettant aux utilisateurs de développer une application dynamique simple pour le web, comme des livres d'or. En Juin 1995, Rasmus » fournit le code source de PHP Tools au grand public, permettant ainsi aux développeurs de l'utiliser comme bon leur semblait. Ceci a également permis - et encouragé - aux utilisateurs de fournir des patches pour corriger les bogues, mais aussi pour éprouver la stabilité du produit.

En septembre de cette année là, Rasmus continua d'élargir PHP et - pour un temps très court - supprima le nom PHP. Faisant dorénavant référence aux outils sous le nom de FI (abréviation pour "Forms Interpreter" ou interpréteur de formulaire), la nouvelle implémentation incluait plusieurs fonctionnalités de base que nous connaissons encore aujourd'hui. Elle avait ces variables qui ressemblent au Perl, un système d'interprétation automatique des variables de formulaires, et une syntaxe qui s'intègre facilement dans HTML. La syntaxe elle-même était similaire à celle du Perl, bien que beaucoup plus limitée, plus simple, et un peu incohérente. En fait, pour embarquer du code dans un fichier HTML, les développeurs devaient utiliser des commentaires HTML. Malgré le fait que cette méthode ne soit pas accueillie avec un grand enthousiasme, FI continua de rassembler de plus en plus de monde, et fut accepté comme outil CGI --- mais toujours pas comme un langage. Cependant, ceci commença à changer les mois suivants ; en octobre 1995, Rasmus livra une nouvelle version totalement ré-écrite. Reprenant le nom de PHP, elle était maintenant nommée (brièvement) "Personal Home Page Construction Kit", et était la première version à mettre en avant le fait que PHP était considéré comme une interface de scripts avancée. Le langage fut délibérément architecturé pour ressembler à la structure du C, rendant ainsi son adoption facile pour les développeurs familiers avec les langages comme C, Perl et consorts. Dans un premier temps limité aux systèmes Unix et POSIX, son potentiel pour une implémentation sous Windows NT commença à être exploré.

Le code fut de nouveau repris de zéro, et en Avril 1996, combinant les noms des précédentes versions, Rasmus introduisit PHP/FI. Cette implémentation de seconde génération commença à faire réellement évoluer PHP d'une simple suite d'outils vers un vrai langage de programmation. Il incluait un support interne pour les bases de données DBM, mSQL et Postgres95, pour les cookies, un support des fonctions définies par l'utilisateur, et bien plus. Ce mois de Juin, PHP/FI prenait un statut de version 2.0. Un point intéressant, cependant, était qu'il n'existait qu'une seule et unique version de PHP 2.0. Quand elle est finalement sortie du statut bêta en Novembre 1997, le moteur d'analyse interne était déjà en cours de ré-écriture complète.

Bien qu'il fournît un cycle de développement très court, il continua de gagner en popularité dans ce monde où le développement web était encore très récent. En 1997 et 1998, PHP/FI comptait plusieurs milliers d'utilisateurs à travers le monde. Le site de surveillance Netcraft, en Mai 1998, indiquait qu'environ 60.000 domaines exportaient l'en-tête "PHP", indiquant ainsi que le serveur hôte l'avait d'installé. Ce nombre correspondait à environ 1% des domaines d'Internet de l'époque. Malgré ce chiffre impressionnant, la maturation de PHP/FI était condamnée à ses limitations ; bien qu'il y ait plusieurs contributeurs mineurs, il était encore principalement développé par un seul individu.

Exemple #1 Exemple de code PHP/FI

    <!--include /text/header.html-->

    <!--getenv HTTP_USER_AGENT-->
    <!--ifsubstr $exec_result Mozilla-->
      Hé, vous utilisez Netscape !<p>
    <!--endif-->

    <!--sql database select * from table where user='$username'-->
    <!--ifless $numentries 1-->
      Désolé, cette ligne n'existe pas<p>
    <!--endif exit-->
      Bienvenue <!--$user--> !<p>
      Vous avez <!--$index:0--> crédits sur votre compte.<p>

    <!--include /text/footer.html-->

### PHP 3

PHP 3.0 fut la première version du langage tel que nous le connaissons actuellement. Trouvant que PHP/FI 2.0 était toujours insuffisant et manquait de fonctionnalités nécessaires pour mettre en oeuvre une application d'eCommerce, qu'ils développaient dans le cadre d'un projet universitaire, Andi Gutmans et Zeev Suraski de la ville de Tel Aviv (Israël) commencèrent encore une autre ré-écriture complète de l'analyseur interne en 1997. Se rapprochant de Rasmus via le web, ils discutèrent de divers aspects de l'implémentation courante et de leur re-développement de PHP. Dans une logique d'amélioration du moteur, et pour profiter des utilisateurs existant de PHP/FI, Andi, Rasmus et Zeev décidèrent de collaborer dans le développement d'un nouvel et indépendant langage de programmation. Ce tout nouveau langage a été publié sous un nouveau nom, qui supprima l'idée d'utilisation personnelle limitée inclue dans le nom de PHP/FI 2.0. Il fut ainsi tout simplement renommé 'PHP', dont la signification devint un acronyme récursif - PHP: Hypertext Preprocessor.

Une des améliorations notables de PHP 3.0 fut ses capacités d'extension. En plus de fournir une infrastructure mature pour de multiples bases de données, protocoles, et APIs, la facilité d'extension du langage en lui-même attira des dizaines de développeurs, qui produisirent de nombreux modules. Ce fut sans aucun doute une des clés de l'énorme succès de PHP 3.0. Une autre de ces clés fut l'introduction d'un support de programmation orientée objet, ainsi qu'une syntaxe de langage bien plus puissante et plus consistante.

En Juin 1998, avec plusieurs nouveaux développeurs de par le monde rejoignant le projet, PHP 3.0 fut annoncé par la nouvelle équipe de développement de PHP comme le successeur officiel de PHP/FI 2.0. Le développement actif de PHP/FI 2.0, qui avait en réalité cessé depuis le mois de Novembre de l'année précédente, était maintenant officiellement terminé. Après environ 9 mois de tests publics, lorsque l'annonce de la version officielle de PHP 3.0 fut publiée, il était déjà installé sur plus de 70.000 domaines à travers le monde, et n'était plus limité aux systèmes POSIX. Une petite partie des domaines rapportant une installation de PHP étaient installés sur des serveurs fonctionnant sous Windows 95, 98, NT, et Macintosh. À son apogée, PHP 3.0 était installé sur approximativement 10% des serveurs web d'Internet.

### PHP 4

Durant l'hiver 1998, juste après la publication de PHP 3.0, Andi Gutmans et Zeev Suraski commencèrent une réécriture du moteur interne de PHP. Les objectifs étaient d'améliorer les performances de PHP sur les applications complexes, et d'améliorer la modularité du code. Ces applications étaient rendues possibles par les nouvelles fonctionnalités de PHP 3.0 et le support d'un grand nombre de bases de données et d'APIs, mais PHP 3.0 n'était pas conçu pour gérer efficacement des applications si complexes.

Le nouveau moteur, appelé 'Zend Engine' (combinaison des prénoms de Zeev et Andi), atteignit cet objectif avec succès, et la première version fut publiée vers la mi-1999. PHP 4.0, s'appuyant sur ce moteur, et amélioré par un grand nombre de nouvelles fonctionnalités, fut publié officiellement en mai 2000, presque 2 ans après son prédécesseur. En plus de performances nettement plus élevées, PHP 4.0 apportait le support de nombreux serveurs web, des sessions HTTP, la bufferisation de sortie, une sécurité accrue de la gestion des informations visiteurs, et plusieurs nouvelles structures de langage.

### PHP 5

PHP 5 est sorti en Juillet 2004, après un long développement et plusieurs pré-versions. Il est régi par son moteur, le `Zend Engine 2.0` avec un nouveau modèle objet et des dizaines d'autres nouvelles fonctionnalités.

L'équipe de développement de PHP regroupe des dizaines de développeurs, en plus des dizaines d'autres travaillant sur des projets en rapport avec PHP, comme PEAR, PECL, et la documentation, ainsi qu'un réseau d'infrastructure sous-jacent d'une centaine de serveurs web individuels sur 6 des 7 continents du monde. En s'appuyant sur une estimation basée sur les statistiques de l'année précédente, il est convenable de supposer que PHP est maintenant installé sur des dizaines, voire même des centaines, de millions de domaines autour du monde.

### PHP 6

PHP 6 était censé offrir un support approfondi de l'Unicode dans le moteur et le langage. Ce travail a été plus tard abandonné, mais d'autres fonctionnalités qui étaient prévues pour PHP 6 ont été incorporées dans PHP 5.3 (espaces de noms) et PHP 5.4 (traits, syntaxe "courte" des tableaux).

### PHP 7

PHP 7.0 a été publié en 2015, et a introduit une autre version majeure du moteur, `Zend Engine 3.0`, qui incluait des améliorations significatives de performances (jusqu'à deux fois plus rapide que PHP 5.6) et de la consommation mémoire, un support 64 bits cohérent, des améliorations sur les exceptions, un générateur de nombres aléatoires sécurisé, l'opérateur de fusion null (??), les classes anonymes, et d'autres fonctionnalités.

Les versions ultérieures de la série PHP 7 ont introduit plus de fonctionnalités comme la syntaxe de liste courte (7.1), la déclaration de type d'objet en paramètre et en retour (7.2), une nouvelle syntaxe flexible pour les heredoc et nowdoc (7.3), des propriétés typées (7.4), et une nouvelle interface de fonction étrangère (7.4).

### PHP 8

Publié pour la première fois en 2020, PHP 8.0 était une autre mise à jour majeure du langage PHP. Il contenait de nombreuses nouvelles fonctionnalités et optimisations incluant les arguments nommés, les type d'unions, les attributs, la promotion de propriétés de constructeur, les expressions `match`, l'opérateur nullsafe (`?->`), un nouveau compilateur JIT optimisé, et des améliorations dans le système de types, la gestion des erreurs, et la cohérence.

Les versions suivantes de la série PHP 8 ont introduit de nouvelles fonctionnalités au langage incluant les énumérations (8.1), les fibres (8.1), les classes en lecture seules (8.2), les types de Forme Normale Disjonctive (DNF), et les constantes typés de classe (8.3).