Passer au contenu
DedicatedPHP Contact

Évolution du langage PHP de la version 1 à la version 8

Découvrez comment le langage de programmation PHP a évolué.

Évolution du langage PHP de la version 1 à la version 8

PHP, ou Hypertext Preprocessor, est un langage de script côté serveur. Principalement utilisé pour le développement web, il a été initialement publié en 1995 par Rasmus Lerdorf. Depuis, PHP a connu de nombreuses versions, chacune apportant des améliorations et des modifications significatives. Examinons l'évolution de PHP, de sa création à PHP 8, la dernière version connue en septembre 2021.

Versions de PHP et changements majeurs

PHP/FI (Personal Home Page / Forms Interpreter) 1.0 (Sorti en 1995)

La première version de PHP, alors connue sous le nom de PHP/FI, a été développée par Rasmus Lerdorf. À l'époque, PHP était un simple ensemble de scripts CGI en Perl qui permettaient à Lerdorf de gérer son CV et de collecter certaines données. Ce n'est que lorsque Lerdorf a combiné ces scripts avec du C pour former PHP/FI que PHP est devenu un produit utilisable par d'autres.

PHP/FI 2.0 (Sorti en 1997)

La version 2 de PHP/FI a introduit plusieurs fonctionnalités qui ont jeté les bases de ce que PHP allait devenir. Parmi ces fonctionnalités figuraient la prise en charge des formulaires et des cookies, ainsi que la possibilité d'intégrer directement du code PHP dans du code HTML.

PHP 3 (Sorti en 1998)

Développé par Andi Gutmans et Zeev Suraski, PHP 3 a opéré une refonte complète du langage, établissant la plupart des conventions syntaxiques que nous connaissons aujourd'hui. Il intégrait pour la première fois la prise en charge des objets et constituait la première version à ressembler véritablement à un langage de programmation complet.

PHP 4 (Sorti en 2000)

PHP 4 a introduit le moteur Zend, un logiciel d'interprétation du code PHP. Ceci a permis d'améliorer les performances et la prise en charge de la programmation orientée objet. Cette version incluait également des fonctionnalités telles que la persistance des sessions et la mise en mémoire tampon des résultats.

PHP5

PHP 5 a apporté des améliorations significatives à la programmation orientée objet, avec l'ajout des classes abstraites, des interfaces, du clonage d'objets et des exceptions. De plus, la prise en charge de XML a été améliorée et celle de SQLite a été introduite.

PHP 5.0 (Sorti en juillet 2004)

  • Améliorations de la programmation orientée objet : Introduction d'un modèle objet complet comprenant des modificateurs d'accès, des interfaces, le clonage et les exceptions.
  • Gestion XML améliorée : Ajout de l'extension SimpleXML pour une gestion plus facile du XML.
  • SQLite : SQLite, un moteur de base de données SQL léger, était inclus. en PHP par défaut.

PHP 5.1 (Sorti en novembre 2005)

  • Prise en charge de PDO (PHP Data Objects) : Fournit une interface pour accéder aux bases de données en PHP.
  • Améliorations des performances : Inclut l'ajout d'un ramasse-miettes pour éliminer les cycles de référence.

PHP 5.2 (Sorti en novembre 2006)

  • Introduction de filter_list() Permet de valider et de filtrer les données en toute sécurité.
  • Améliorations des performances et de la stabilité : Inclut la mise à jour de la bibliothèque PCRE, qui améliore la compatibilité et les performances.

PHP 5.3 (Sorti en juin 2009)

  • Espaces de noms Ils permettent de mieux organiser le code en paquets.
  • Liaisons statiques tardives Améliore l'héritage de code en PHP.
  • Fermetures (fonctions anonymes) Il est désormais possible de créer des fonctions sans leur attribuer un nom spécifique.
  • Améliorations de la gestion des exceptions La possibilité d'utiliser plusieurs exceptions catch est introduite.
  • Prise en charge de la syntaxe ternaire imbriquée sans avoir besoin de parenthèses.

PHP 5.4 (Sorti en mars 2012)

  • Caractéristiques Permet la réutilisation de code dans les langages de programmation à ancêtre unique, une sorte d'héritage multiple.
  • Syntaxe abrégée des tableaux Il est désormais possible de déclarer des tableaux avec des crochets [] au lieu d'utiliser la fonction array().
  • Gestion de la mémoire améliorée Réduit l'utilisation globale de la mémoire.

PHP 5.5 (Sorti en juin 2013)

  • Générateurs Permet de créer facilement des itérateurs sans avoir besoin d'implémenter l'interface d'itérateur.
  • Enfin, mot-clé : Permet de garantir qu'un segment de code est toujours exécuté, qu'une exception soit levée ou non.
  • Prise en charge des listes dans la boucle foreach.

PHP 5.6 (Sorti en août 2014)

  • Déballage de l'argument : Permet d'utiliser ... pour déballer les arguments d'un tableau ou d'un objet Traversable.
  • Utilisez une fonction et utilisez une constante : Importer des fonctions et des constantes dans un espace de noms.
  • Améliorations des BPF Permet l'utilisation des nombres GMP dans les fonctions qui acceptent des entiers ou des chaînes de caractères.
  • Améliorations de la sécurité : La prise en charge des certificats de signature à clé publique a été ajoutée.

PHP 7 (Sorti en 2015)

Avec PHP 7, un bond en avant considérable en termes de performances a été réalisé grâce à l'introduction du moteur d'exécution Just-In-Time (JIT). Parmi les autres fonctionnalités, citons les types de retour, la déclaration de types scalaires, l'opérateur de fusion de valeurs nulles et la possibilité de définir des tableaux de constantes à l'aide de la méthode `define()`.

PHP 7.0 (Sorti en décembre 2015)

  • Amélioration des performances Le nouveau moteur PHPNG (Zend Engine 3) améliore les performances, réduit l'utilisation de la mémoire et facilite la gestion des erreurs.
  • déclarations de type de retour Cette fonctionnalité vous permet de spécifier le type de valeur qu'une fonction doit renvoyer.
  • Déclarations de types scalaires : Permet de forcer le type des paramètres dans les fonctions (int, float, string, bool).
  • Opérateur de fusion nulle (??) Cet opérateur simplifie la vérification des valeurs nulles.
  • Opérateur de vaisseau spatial (<=>) Introduit pour faciliter la comparaison entre deux expressions.

PHP 7.1 (Sorti en décembre 2016)

  • Types nullables Il est permis d'indiquer que la valeur de retour d'une fonction peut être d'un type spécifique ou nulle.
  • Fonctions vides Le type void a été introduit pour les fonctions qui ne renvoient rien.
  • visibilité constante de la classe Vous pouvez désormais définir les constantes de classe comme publiques, privées ou protégées.
  • pseudo-type itérable : Entrez le type itérable des paramètres et les types de retour des fonctions.

PHP 7.2 (Sorti en novembre 2017)

  • Libsodium Cette bibliothèque pour la cryptographie moderne et sécurisée est désormais incluse par défaut.
  • Améliorations de type : Ajout du type « objet » et autorisation de l'utilisation de types abstraits dans les déclarations de types de paramètres et de types de retour.

PHP 7.3 (Sorti en décembre 2018)

  • Virgules finales dans les appels de fonction Les virgules finales sont autorisées dans les appels de fonction.
  • Amélioration de la vitesse du code JSON Les performances des fonctions json_encode() et json_decode() ont été améliorées.
  • Améliorations du GC : Apporte des améliorations au ramasse-miettes, ce qui permet de réduire la consommation de mémoire.

PHP 7.4 (Sorti en novembre 2019)

  • fonctions fléchées Cette fonctionnalité permet de créer des fonctions anonymes de manière plus concise.
  • Propriétés typées Les propriétés de classe peuvent désormais avoir des types déclarés.
  • Déballage à l'intérieur des tableaux Cette fonctionnalité permet de décompresser des tableaux à l'intérieur d'autres tableaux.
  • Références faibles Permet de conserver des références aux objets sans empêcher leur destruction par le ramasse-miettes.

PHP 8 (Sorti en 2020)

La version 8 de PHP a introduit de nombreuses nouveautés intéressantes, comme la compilation à la volée (JIT), qui améliore encore les performances. Parmi les nombreuses autres fonctionnalités, on trouve également les types de données union, les expressions de correspondance, l'opérateur nullsafe, les arguments nommés et les attributs.

Et la version 6, elle est où ?

La version PHP 6 existait bel et bien en tant que projet, mais n'a jamais été officiellement publié L'objectif principal de PHP 6 était de fournir une prise en charge native d'Unicode, une norme permettant le traitement de texte dans n'importe quelle langue du monde.

Cependant, les développeurs se sont heurtés à un certain nombre de problèmes survenus lors du développement L'intégration complète d'Unicode dans le noyau PHP s'est avérée bien plus complexe que prévu. De plus, les performances de la version préliminaire de PHP 6 avec Unicode étaient nettement inférieures.

En raison de ces difficultés et du retard de développement, le projet PHP 6 a finalement été abandonné. Les développeurs ont décidé de ne pas inclure le chiffre 6 dans la dénomination de la version majeure suivante de PHP afin d'éviter toute confusion avec le projet PHP 6, qui n'avait pas abouti. Par conséquent, après PHP 5.6, la version majeure suivante fut PHP 7.0.

PHP 7 a intégré de nombreuses fonctionnalités prévues pour PHP 6, mais n'a pas inclus la prise en charge native d'Unicode dans le noyau du langage. PHP 7 s'est plutôt concentré sur l'amélioration des performances et l'ajout de nouvelles fonctionnalités.

Parlons performances, la mise à niveau vaut-elle le coup ?

L'évolution du langage de programmation n'a pas seulement apporté de nouvelles fonctionnalités, mais un accent particulier a également été mis sur l'amélioration des performances à chaque version :

  • PHP/FI 2.0 - Faible Il n'était pas optimisé pour les performances, l'accent étant mis principalement sur les fonctionnalités des formulaires et l'interaction avec les bases de données.
  • PHP 3 - Amélioré par rapport à PHP/FI 2.0. La réécriture du moteur PHP a permis d'améliorer les performances et l'efficacité.
  • PHP 4 - Amélioré par rapport à PHP 3. L'introduction du moteur Zend a permis une amélioration supplémentaire des performances.
  • PHP 5.0 - Similaire à PHP 4. Bien qu'il comprenne des améliorations significatives en matière de programmation orientée objet et de prise en charge XML, ses performances étaient similaires à celles de PHP 4.
  • PHP 5.1 - 5.6 - Amélioré à chaque mise à jour mineure, notamment grâce à des optimisations de performances et des améliorations du système de récupération des déchets.
  • PHP 7.0 - Nettement amélioré par rapport à PHP 5.X grâce à l'introduction de Zend Engine 3. Les performances de PHP 7.0 pouvaient être deux à trois fois supérieures à celles de PHP 5.6 pour de nombreuses applications.
  • PHP 7.1 - 7.4 - Chaque version mineure a introduit des améliorations de performances, bien que moins drastiques que le passage de PHP 5.6 à PHP 7.0.
  • PHP 8.0 - Amélioré par rapport à PHP 7.4. L'ajout de la compilation Just-In-Time (JIT) peut améliorer les performances dans certains cas, bien que l'amélioration puisse ne pas être significative pour les applications Web classiques.

Et la sécurité ? Que pouvez-vous me dire ?

PHP/FI 2.0 - PHP 3

  • Dans ces premières versions, la sécurité n'était pas une préoccupation majeure et de nombreuses fonctionnalités de sécurité n'étaient pas incluses.

PHP4

  • PHP 4 a introduit le mode sécurisé, destiné à empêcher certains types d'attaques, mais il a finalement été jugé inefficace et a été déprécié et supprimé dans PHP 5.4.

PHP5

PHP 5 a introduit un certain nombre d'améliorations en matière de sécurité :

  • Guillemets magiques : introduits pour prévenir les attaques par injection SQL, ils ont été critiqués pour leur comportement incohérent et ont finalement été désactivés par défaut dans PHP 5.3 et supprimés dans PHP 5.4.
  • Améliorations de la gestion des erreurs : PHP 5 a introduit les exceptions, ce qui améliore la gestion des erreurs et peut contribuer à prévenir la divulgation d’informations sensibles.
  • PDO (PHP Data Objects) : Introduit dans PHP 5.1, il fournit une interface d'accès aux bases de données incluant des requêtes préparées, ce qui peut contribuer à prévenir les injections SQL.

PHP 5.2

  • Filtre d'entrée : PHP 5.2 a introduit l'extension filter qui permet la validation et le filtrage des données d'entrée de manière sécurisée et cohérente.

PHP 5.3

  • PHAR (PHP Archive) : PHP 5.3 a introduit la prise en charge de PHAR, un format permettant de regrouper des applications PHP complètes dans une seule archive. Bien que cela ne constitue pas une amélioration de sécurité en soi, PHAR intègre plusieurs mesures de sécurité pour prévenir les attaques, comme la validation des signatures numériques.

PHP 5.6

  • Amélioration de la sécurité SSL/TLS : PHP 5.6 a introduit la prise en charge des certificats de signature à clé publique et des améliorations des paramètres SSL/TLS par défaut.

PHP 7

PHP 7 a désactivé ou supprimé plusieurs fonctions et fonctionnalités obsolètes et potentiellement non sécurisées :

  • Plusieurs fonctions de hachage non sécurisées, telles que crypt() et hash(), ont été supprimées.
  • Désactivation de la désérialisation automatique pour prévenir les vulnérabilités liées à l'injection d'objets.
  • Introduction de la déclaration de type et de la déclaration de type de retour afin de prévenir les erreurs de type susceptibles d'être exploitées.

PHP 7.2

  • Amélioration de la sécurité des mots de passe : PHP 7.2 a introduit la fonction password_hash() avec prise en charge d’Argon2, un algorithme de hachage de mots de passe plus sécurisé.

PHP 8

PHP 8 n'a pas introduit beaucoup de nouvelles fonctionnalités de sécurité, mais il a poursuivi la tendance de PHP 7 consistant à supprimer ou désactiver les fonctionnalités obsolètes et potentiellement non sécurisées.

Conclusion

La mise à jour vers la dernière version de PHP offre souvent des avantages. plusieurs avantages Premièrement, les mises à jour incluent souvent améliorations des performances ce qui peut accélérer l'exécution de vos applications web. Deuxièmement, les versions plus récentes incluent souvent nouvelles fonctionnalités ce qui peut rendre le code plus efficace et plus facile à écrire et à maintenir. Troisièmement, les versions plus récentes de PHP incluent souvent des améliorations de sécurité qui peuvent Protégez votre application contre les attaques et les vulnérabilités.

Cependant, il est également important de noter que la mise à jour vers une nouvelle version de PHP peut entraîner des problèmes. défis Le code existant peut nécessiter une révision ou une refactorisation pour prendre en charge de nouvelles fonctionnalités ou pour éviter celles qui ont été désactivées ou supprimées. Dans tous les cas, la mise à jour de PHP est essentielle au bon fonctionnement de l'application. application web sécurisée et performante .

Vous souhaitez appliquer ces idées à votre projet ?Parlons de votre plateforme PHP.
Afficher les services associés