PHP a 20 ans !

8 juin 2015php

Le 8 juin 1995, il y a 20 ans aujourd’hui, Rasmus Lerdorf annonçait la version 1.0 de ce qui s’appelait à l’époque Personal Home Page Tools, ou PHP Tools.

Il s’agissait alors uniquement d’un ensemble de binaires CGI écrits en C, résolument orientés « Web », puisqu’ils permettaient dès cette première version de créer des formulaires et de réutiliser plus tard les informations saisies, de mettre en place des compteurs d’accès, de suivre des logs, … Ce mail d’annonce faisait même explicitement référence à la facilité de mise en place d’un livre d’or apportée par ces outils !

Pour vous donner une idée de la taille réduite de PHP à cette époque, voici la liste des 18 fichiers composant la distribution de PHP 1.0.8 :

$ tree php-108
php-108
├── common.c
├── common.h
├── config.h
├── error.c
├── html_common.h
├── License
├── Makefile
├── phpf.c
├── phpl.c
├── phplmon.c
├── phplview.c
├── post.c
├── post.h
├── README
├── subvar.c
├── version.h
├── wm.c
└── wm.h

0 directories, 18 files

Vous pouvez comparer avec le contenu actuel de la branche master ;-)


Après plusieurs ré-écritures et changements de noms, PHP/FI (pour « Forms Interpreter ») a été introduit en avril 1996 : d’un ensemble d’outils, PHP avait commencé à évoluer vers un véritable langage de programmation, avec support de plusieurs bases de données, des cookies, la possibilité pour l’utilisateur de définir des fonctions, …

PHP/FI 2.0 est sortie en novembre 1997, alors qu’une nouvelle ré-écriture du moteur d’analyse était déjà en cours — la version 2.0 est d’ailleurs la seule version stable de PHP/FI qui ait été publiée !

L’écriture de code PHP/FI commençait déjà plus ou moins à ressembler à ce que l’on connait de PHP aujourd’hui, même si tout n’était pas encore fixé. Pour les curieux, le manuel de PHP/FI 2.0 est toujours disponible : PHP/FI Version 2.0 ; et voici le code d’un des exemples qui était fourni avec PHP 2.0 :

<?
    msqlsethost("localhost");
    $name = "bob";    
    $result = msql($database,"select * from table where firstname='$name'");
    $num = msql_numrows($result);
    echo "$num records found!<p>";
    $i=0;
    while($i<$num);
        echo msql_result($result,$i,"fullname");
        echo "<br>";
        echo msql_result($result,$i,"address");
        echo "<br>";
        $i++;
    endwhile;
>


En 1997, Andi Gutmans et Zeev Suraski ont commencé à travailler sur une ré-écriture complète de l’analyseur. Leur collaboration avec Rasmus Lerdorf, visant à la fois à améliorer le moteur et à profiter des nombreux utilisateurs existant de PHP/FI, mena à une nouvelle version du langage : PHP 3 — avec au passage un changement de nom, PHP signifiant désormais « PHP: Hypertext Preprocessor ».

Au delà de sa syntaxe, un des avantages majeurs de PHP 3.0, publié en juin 1998, fût son mécanisme d’extensions : en complément des modules intégrés à la distribution de base du langage, de nombreux autres ont pu être développés, permettant réellement à PHP d’agir comme glue entre plusieurs composants.

Il me semble que les tous premiers scripts que j’ai écrit en PHP étaient sous PHP 3, pendant mes années lycée, d’ailleurs !


PHP 3.0 venait à peine de sortir qu’une nouvelle ré-écriture du moteur fût lancée. Elle mena au Zend Engine, sur lequel s’appuyait PHP 4.0, publié en mai 2000.

Cette version apportait une amélioration conséquente des performances, ainsi que le support de nombreux serveurs web ou des fonctionnalités comme la gestion des sessions HTTP.

C’est avec PHP 4 que j’ai réellement commencé à développer pour le Web. C’est d’ailleurs aussi la version de PHP que j’ai commencé à utiliser dans le cadre de mes études !


Après une longue phase de développements, qui va sans doute de pair avec le fait que PHP 4 était déjà largement utilisé, PHP 5.0 a été publiée en juillet 2004.

Cette version, basée sur Zend Engine 2, a notamment introduit un nouveau modèle objet1 et a été suivie en plus de 10 ans par six versions mineures apportant nombreuses améliorations au langage.

D’une certaine manière, c’est avec PHP 5 et ses différents versions mineures que PHP est passé du statut de langage amateur à celui de langage permettant de réaliser des développements professionnels d’applications de grande envergure — avec le niveau de qualité que l’on est en mesure d’attendre en 2015. Bien sûr, les efforts poussés par l’ensemble de la communauté, que ce soit en termes de bonnes pratiques ou de composants open-source de qualité, n’y sont pas pour rien !

PHP 5 a d’ailleurs été la première version de PHP que j’ai utilisée dans un contexte professionnel (en 2006). Pour mon premier gros projet, une des questions qui s’étaient posées à son lancement était même « faut-il rester sur PHP 4 ou se lancer sur PHP 5 ? » !


Aujourd’hui, après une tentative « PHP 6 » ratée il y a plusieurs années et une activité assez intense sur 2014 et début 2015, PHP 7.0 est en cours de stabilisation et on peut raisonnablement espérer une publication en fin d’année !

Cette version apportera à nouveau un gain important en termes de performances, ainsi qu’une nouvelle série d’améliorations et d’évolutions. Je vous encourage vivement à les découvrir et à tester vos applications sous PHP 7 dès maintenant !


En tout cas, aujourd’hui est le jour parfait pour dire « Bon Anniversaire ! » et « Merci ! » à PHP et à sa communauté !



  1. Un véritable modèle objet, diraient certains ? 

Vous avez apprécié cet article ? Faites-le savoir !

Ce blog a récemment été migré vers un générateur de sites statiques et je n'ai pas encore eu le temps de remettre un mécanisme de commentaires en place.

Avec un peu de chance, je parviendrai à m'en occuper d'ici quelques semaines ;-)