« PHP » : différence entre les versions

Contenu supprimé Contenu ajouté
Lastrik (discuter | contributions)
m Annulation de la modification de Getitzone (d) pas de pub
Balises : Annulation Révoqué
Mjöllnir4 (discuter | contributions)
Versions : allègement de cette section pour ne parler que des versions majeures Historique des versions : allègement du tableau, ajout des liens vers la page officielle pour les changelogs complets et le support
 
(24 versions intermédiaires par 15 utilisateurs non affichées)
Ligne 4 :
| nom = {{blanc|PHP}}
| logo = PHP-logo.svg
| développeurs = {{URL|https://www.php.net/credits.php|The PHP Group}}, [[Zend Technologies]], {{URL|https://thephp.foundation/|PHP Foundation}}
| date de première version = [[1995]]<ref>{{lien web|url=https://www.php.net/manual/fr/history.php.php|titre=Histoire de php}}.</ref>
| date de dernière version = 8.2.10 (29 août 2023)
| système d'exploitation = [[Logiciel multiplate-forme|Multi-plateforme]]
| licence = [[Licence libre]] :<br>[[Licence PHP]]<ref>{{lien web|url=http://www.php.net/license/3_01.txt|titre=source}}.</ref>
| siteextensions web = .php, .phar, =.phtml, https://secure.phppht, .netphps
| site web = https://www.php.net/
| auteur = [[Rasmus Lerdorf]]
| paradigmes = [[Programmation impérative|Impératif]], [[Programmation orientée objet|orienté objet]], [[Programmation fonctionnelle|fonctionnel]], [[Programmation procédurale|procédural]], [[Réflexion (informatique)|réflexif]] et [[Langage de script|interprété]]
| typage = [[Typage dynamique|Dynamique]], [[Typage faible|Faible]]
| influencé par = [[C (langage)|C]]/[[C++]]<br>[[Java (langage)|Java]]<br>[[Perl (langage)|Perl]]<ref>{{lien web|url=http://www.php.net/manual/fr/preface.php|titre=PHP: Préface - Manual|site=www.php.net}}.</ref>
}}
 
''{{Terme défini|PHP: Hypertext Preprocessor|en}}''<ref name="manpreface">{{Lien web | url=http://www.php.net/manual/fr/preface.php | titre=Manuel PHP : Préface | site=[http://www.php.net/ PHP.net] | consulté le=7 novembre 2007}}.</ref>, plus connu sous son sigle {{Terme défini|PHP}} ([[Sigles auto-référentiels|sigle auto-référentiel]]), est un [[langage de programmation]] [[logiciel libre|libre]]<ref name="fsfphplicense">{{en}} {{Lien web | url=http://www.fsf.org/licensing/licenses/index_html#GPLIncompatibleLicenses | titre=La licence de PHP est reconnue libre par la ''Free Software Foundation'' | consulté le=7 novembre 2007}}.</ref>, principalement utilisé pour produire des [[Page Web dynamique|pages Web dynamiques]] via un [[serveur web]]<ref name="manpreface" />, mais pouvant également fonctionner comme n'importe quel [[langage interprété (informatique)|langage interprété]] de façon locale. PHP est un [[Programmation impérative|langage impératif]] [[orienté objet]].
 
Alexandre T est son créateur. Ce grand étudiant en MIAGE est aussi l'auteur de JavaScript, python et CSS.
 
PHP a permis de créer un grand nombre de sites web célèbres, comme [[Facebook]] et [[Wikipédia]]<ref>{{Lien web|langue = français|titre = Introduction à PHP|url = https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/introduction-a-php#/id/r-2172370|site = openclassrooms.com|consulté le = 14 juillet 2015}}.</ref>. Il est considéré comme une des bases de la création de sites web dits [[Page web dynamique|dynamiques]] mais également des [[Application web|applications web]].
Ligne 38 ⟶ 36 :
La version 5.3 a introduit de nombreuses fonctions nouvelles : les [[Espace de noms (programmation)|espaces de noms]] (Namespace) — un élément fondamental de l'élaboration d'[[Extension (logiciel)|extensions]], de [[Bibliothèque logicielle|bibliothèques]] et de [[framework]]s structurés, les [[Fonction anonyme|fonctions anonymes]], les [[Fermeture (informatique)|fermetures]], etc.
 
En 2018, près de 80 % des sites web utilisent le langage PHP sous ses différentes versions<ref>{{lien web|titre=PHP is dead…Viva le PHP! – Hacker Noon|url=https://hackernoon.com/php-is-dead-viva-le-php-f5dc5eb5c9c4|date=26 octobre 2018}}.</ref>.
 
Le langage PHP fait l'objet, depuis plusieurs années maintenant, de rassemblements nationaux organisés par l'AFUP<ref>{{Lien web|titre=Afup - Association française des utilisateurs de PHP|url=https://afup.org/|site=afup.org|consulté le=2018-11-29}}.</ref> (l'Association Française des Utilisateurs de PHP), où experts de la programmation et du milieu se retrouvent pour échanger autour du PHP et de ses développeurs. L'association organise ainsi deux évènements<ref>{{Lien web|langue=fr-FR|titre=AFUP Day 2019|url=https://event.afup.org/|site=event.afup.org|consulté le=2018-11-29}}.</ref> majeurs : le « Forum PHP », habituellement en fin d'année, et les « AFUP Day », qui ont lieu au cours du premier semestre, simultanément dans plusieurs villes.
 
== Histoire ==
Le langage PHP a été créé en [[1994]] par [[Rasmus Lerdorf]] pour son [[site web]]. C'était à l'origine une [[bibliothèque logicielle]] en [[C (langage)|C]]<ref>{{lien web | url = https://twitter.com/rasmus/status/226405807305138176 | titre = I wonder why people keep writing that PHP was ever written in Perl. It never was. #php | format = html | nom = Lerdorf | prénom = Rasmus | périodique = Twitter | date = 2012-07-20 | consulté le = 2014-09-05 }}.</ref> dont il se servait pour conserver une trace des visiteurs qui venaient consulter son [[Curriculum vitæ|CV]]. Au fur et à mesure qu'il ajoutait de nouvelles fonctionnalités, Rasmus a transformé la bibliothèque en une implémentation capable de communiquer avec des [[Base de données|bases de données]] et de créer des applications dynamiques et simples pour le [[World Wide Web|Web]]. Rasmus a alors décidé, en [[1995]], de publier son code, pour que tout le monde puisse l'utiliser et en profiter<ref>{{lien web|url=https://groups.google.com/forum/#!msg/comp.infosystems.www.authoring.cgi/PyJ25gZ6z7A/M9FkTUVDfcwJ|titre=Google Groups|site=groups.google.com}}.</ref>. PHP s'appelait alors PHP/FI (pour '''''P'''ersonal '''H'''ome '''P'''age Tools/'''F'''orm '''I'''nterpreter''). En [[1997]], deux étudiants, [[Andi Gutmans]] et [[Zeev Suraski]], ont redéveloppé le cœur de PHP/FI. Ce travail a abouti un an plus tard à la version 3 de PHP, devenu alors ''PHP: Hypertext Preprocessor''. Peu de temps après, Andi Gutmans et Zeev Suraski ont commencé la réécriture du moteur interne de PHP. C’est ce nouveau moteur, appelé ''[[Zend Engine]]'' — le mot ''Zend'' est la contraction de '''''Ze'''ev'' et ''A'''nd'''i'' — qui a servi de base à la version 4 de PHP<ref name="histoirephp">{{Lien web | url=http://www.php.net/manual/fr/history.php | titre=Histoire de PHP | site=[http://www.php.net/ PHP.net] | consulté le=7 novembre 2007}}.</ref>.
 
=== Mascotte ===
[[Fichier:Webysther 20160423 - Elephpant.svg|alt=L'elePHPant, la mascotte de PHP|vignette|200x200px|L'elePHPant, la mascotte de PHP]]
 
Comme de nombreux projets [[Open Source]], PHP possède une mascotte. Il s'agit de ''l'elePHPant'', un [[éléphant]] violet avec le logo de PHP sur son flanc<ref>{{Lien web |langue=fr |titre=PHP: ElePHPant |url=https://www.php.net/elephpant.php |site=www.php.net |consulté le=2024-12-24}}</ref>. Elle a été dessinée par Vincent Pontier en 1998 d'après une ressemblance des lettres "PHP" avec un éléphant lorsqu'on les regarde de coté<ref>{{Lien web |langue=en-US |prénom=Khayrattee |nom=Wasseem |titre=How & Why Did The PHP Mascot Come To Birth? The elePHPant Secret Story! - 7PHP |url=https://7php.com/elephpant/ |site=https://7php.com/ |date=2020-06-04 |consulté le=2024-12-24}}</ref>.
 
Beaucoup de variations de cette mascotte ont été créées au fil du temps principalement sous forme d'images, mais aussi sous forme de peluches et divers goodies<ref>{{Lien web |langue=anglais |titre=Page Flickr officielle |url=https://www.flickr.com/groups/elephpants/ |site=Flickr}}</ref>, cependant seul le design original de Vincent Pontier est considéré comme officiel par la communauté.
 
Le site {{Lien web|url=https://afieldguidetoelephpants.net|langue=en-US|titre=A Field Guide to Elephpants}} recense tous les éléPHPants existants.
 
=== Utilisation<!-- à mettre à jour sur les usages en 2020 --> ===
En [[2002]], PHP est utilisé par plus de 8 millions de sites Web à travers le monde<ref name="netcraft2002-02">{{en}} {{Lien web | url=http://survey.netcraft.com/index-200202.html | titre=Netcraft web Server Survey - février 2002 | consulté le=7 novembre 2007}}.</ref>, en [[2007]] par plus de 20 millions<ref>{{lien web|url=http://www.php.net/usage.php|titre=PHP: PHP Usage Stats|site=www.php.net}}.</ref> et en 2013 par plus de 244 millions<ref>{{lien web|url=http://news.netcraft.com/archives/2013/01/31/php-just-grows-grows.html|titre=PHP just grows & grows - Netcraft|site=news.netcraft.com}}.</ref>.
 
De plus, PHP est devenu le langage de [[Programmation web#Programmation web côté serveur|programmation web côté serveur]] le plus utilisé depuis plusieurs années :
Ligne 54 ⟶ 61 :
| 2010 || 75 %
|-
| 2013 || 75 %<ref>{{lien web|langue=fr|titre=Server-side programming language statistics|url=http://blog.stoneriverelearning.com/top-5-programming-languages-used-in-web-development/|date=2013-03-06}}.</ref>
|-
| 2016 || 82 %<ref>{{lien web|langue=fr|titre=Server-side Programming Languages|url=http://w3techs.com/|éditeur=w3techs|date=2016-04-28}}.</ref>
|-
| 2022 || 78 %<ref>{{lien web|langue=fr|titre=Server-side Programming Languages|url=http://w3techs.com/|éditeur=w3techs|date=2022-12-11}}.</ref>
|}
 
Enfin en 2010, PHP est le langage dont les logiciels open source sont les plus utilisés dans les entreprises, avec 57 % de [[Taux de pénétration du marché|taux de pénétration]]<ref>{{lien web|langue=fr|url=http://news.cnet.com/8301-13505_3-10453213-16.html|titre=PHP and Perl crashing the enterprise party}}.</ref>.
 
=== Versions Majeures ===
 
Depuis {{date-||juin|2011}} et le nouveau processus de livraison de PHP<ref>{{lien web|url=https://wiki.php.net/rfc/releaseprocess|titre=PHP: rfc:releaseprocess|site=wiki.php.net}}.</ref>, le cycle de livraison de PHP se résume à une mise à jour annuelle comportant des changements fonctionnels importants.
La durée de vie d'une branche est de 3 ans, laissant trois branches stables et maintenues (cela signifie que lorsqu'une nouvelle version de PHP 5.x sort, la version 5.x-3 n'est plus supportée).
 
==== Version 8.2 (PHP 8) ====
Sortie le {{date-|26 novembre 2020}}, cette version majeure se démarque principalement par la fonctionnalité de « [[compilation à la volée]] » (''Just-in-time compilation''<ref name="r1">{{lien web|url=https://wiki.php.net/rfc/jit|titre=PHP: rfc:jit|site=wiki.php.net|consulté le=2019-04-05}}.</ref>) qui permet un gain de vitesse d'exécution de plus de 45 %<ref>{{Lien web |langue=fr |titre=PHP 8 : toutes les infos sur la nouvelle version |url=https://www.ionos.fr/digitalguide/sites-internet/developpement-web/php-8/ |site=IONOS Digitalguide |consulté le=2021-12-21}}.</ref> pour certaines applications Web. D'autres nouveautés sont également introduites comme :
Sortie le 8 décembre 2022, avec :
* la promotion des propriétés du constructeur<ref>{{Lien web |url=https://www.php.net/manual/fr/language.oop5.decon.php#language.oop5.decon.constructor.promotion|titre=Constructeurs et destructeurs |consulté le=2024-04-03}}.</ref> ;
* les classes en lecture seule : <code>readonly class</code> signifie que tous les arguments de son constructeur sont implicitement en <code>readonly</code> ;
* les weakmaps<ref>{{Lien web |titre=PHP: rfc:weak_maps |url=https://wiki.php.net/rfc/weak_maps |site=wiki.php.net |consulté le=2021-12-21}}.</ref> ;
* les types <code>null</code>, <code>true</code> et <code>false</code> ;
* la Stringable Interface<ref>{{Lien web |titre=PHP: rfc:stringable |url=https://wiki.php.net/rfc/stringable |site=wiki.php.net |consulté le=2021-12-21}}.</ref> ;
* les constantes dans les traits ;
* l'expression throw<ref>{{Lien web |titre=PHP: rfc:throw_expression |url=https://wiki.php.net/rfc/throw_expression |site=wiki.php.net |consulté le=2021-12-21}}.</ref>.
* la [[forme normale disjonctive]] de type (combinaison de l'union et de l'intersection).
 
==== Version 8.1 ====
La version 8.1, sortie le 25 novembre 2021, introduit de nouvelles fonctionnalités comme :
 
* les énumérations<ref>{{Lien web |titre=PHP: Enumerations - Manual |url=https://www.php.net/manual/en/language.enumerations.php |site=www.php.net |consulté le=2021-12-02}}</ref> ;
* les fibers pour créer des [[coroutine]]s<ref>{{Lien web |titre=PHP: rfc:fibers |url=https://wiki.php.net/rfc/fibers |site=wiki.php.net |consulté le=2021-12-02}}</ref> ;
* la propriété ''readonly'' pour empêcher une variable d'être modifiée<ref>{{Lien web |titre=PHP: rfc:readonly_properties_v2 |url=https://wiki.php.net/rfc/readonly_properties_v2 |site=wiki.php.net |consulté le=2021-12-02}}</ref>.
 
==== Version 8 ====
Sortie le {{date-|26 novembre 2020}}, cette version majeure se démarque principalement par la fonctionnalité de « [[compilation à la volée]] » (''Just-in-time compilation''<ref name="r1">{{lien web|url=https://wiki.php.net/rfc/jit|titre=PHP: rfc:jit|website=wiki.php.net|consulté le=2019-04-05}}</ref>) qui permet un gain de vitesse d'exécution de plus de 45 %<ref>{{Lien web |langue=fr |titre=PHP 8 : toutes les infos sur la nouvelle version |url=https://www.ionos.fr/digitalguide/sites-internet/developpement-web/php-8/ |site=IONOS Digitalguide |consulté le=2021-12-21}}</ref> pour certaines applications Web. D'autres nouveautés sont également introduites comme :
 
* les weakmaps<ref>{{Lien web |titre=PHP: rfc:weak_maps |url=https://wiki.php.net/rfc/weak_maps |site=wiki.php.net |consulté le=2021-12-21}}</ref> ;
* la Stringable Interface<ref>{{Lien web |titre=PHP: rfc:stringable |url=https://wiki.php.net/rfc/stringable |site=wiki.php.net |consulté le=2021-12-21}}</ref> ;
* l'expression throw<ref>{{Lien web |titre=PHP: rfc:throw_expression |url=https://wiki.php.net/rfc/throw_expression |site=wiki.php.net |consulté le=2021-12-21}}</ref>.
 
==== Version 7.4 ====
 
La version 7.4 est sortie le {{date-|20|Février|2020}}<ref name="releasesphp">{{en}} {{Lien web | url=http://www.php.net/releases/ | titre=Historique des sorties de PHP | site=[http://www.php.net/ PHP.net] | consulté le=6 avril 2020}}</ref>. Elle vise à être maintenue jusqu'en {{date-|novembre 2022}}.
 
La version 7.4 se démarque de ses précédentes versions par :
* les propriétés typées 2.0<ref>{{lien web|url=https://wiki.php.net/rfc/typed_properties_v2|titre=PHP: rfc:typed_properties_v2|website=wiki.php.net|consulté le=2019-04-04}}</ref> ;
* le pré-chargement<ref>{{lien web|url=https://wiki.php.net/rfc/preload|titre=PHP: rfc:preload|website=wiki.php.net|consulté le=2019-04-04}}</ref> ;
* l'opérateur d'affectation de coalescence nulle<ref>{{lien web|url=https://wiki.php.net/rfc/null_coalesce_equal_operator|titre=PHP: rfc:null_coalesce_equal_operator|website=wiki.php.net|consulté le=2019-04-04}}</ref> ;
*improve openssl_random_pseudo_bytes<ref>{{lien web|url=https://wiki.php.net/rfc/improve-openssl-random-pseudo-bytes|titre=PHP: rfc:improve-openssl-random-pseudo-bytes|website=wiki.php.net|consulté le=2019-04-04}}</ref> ;
* les références faibles<ref>{{lien web|url=https://wiki.php.net/rfc/weakrefs|titre=PHP: rfc:weakrefs|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* FFI (Foreign Function Interface)<ref>{{lien web|url=https://wiki.php.net/rfc/ffi|titre=PHP: rfc:ffi|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* l'extension de [[Fonction de hachage|hachage]] omniprésente<ref>{{lien web|url=https://wiki.php.net/rfc/permanent_hash_ext|titre=PHP: rfc:permanent_hash_ext|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* le registre de hachage de mot de passe<ref>{{lien web|url=https://wiki.php.net/rfc/password_registry|titre=PHP: rfc:password_registry|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* le fractionnement des chaînes multi-octets<ref>{{lien web|url=https://wiki.php.net/rfc/mb_str_split|titre=PHP: rfc:mb_str_split|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* la réflexion sur les références<ref>{{lien web|url=https://wiki.php.net/rfc/reference_reflection|titre=PHP: rfc:reference_reflection|website=wiki.php.net|consulté le=2019-04-05}}</ref> ;
* le retrait de ext/wddx<ref>{{lien web|url=https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx|titre=PHP: rfc:deprecate-and-remove-ext-wddx|website=wiki.php.net|consulté le=2020-04-05}}</ref> ;
* un nouveau mécanisme de [[sérialisation]] d'objets personnalisés<ref>{{lien web|url=https://wiki.php.net/rfc/custom_object_serialization|titre=PHP: rfc:custom_object_serialization|website=wiki.php.net|consulté le=2020-04-05}}</ref>.
 
==== Version 7.3 ====
 
Le {{date-|6 décembre 2018}}, la sortie de la version 7.3 mettait l'accent sur :
* l'évolution de la syntaxe [[Here document#PHP|Heredoc]] et Nowdoc<ref>{{lien web|url=https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes|titre=PHP: rfc:flexible_heredoc_nowdoc_syntaxes|website=wiki.php.net}}</ref> ;
* la prise en charge de l'affectation de référence et de la déconstruction de tableau avec `list()`<ref>{{lien web|url=https://wiki.php.net/rfc/list_reference_assignment|titre=PHP: rfc:list_reference_assignment|website=wiki.php.net}}</ref> ;
* la prise en charge de PCRE2<ref>{{lien web|url=https://wiki.php.net/rfc/pcre2-migration|titre=PHP: rfc:pcre2-migration|website=wiki.php.net}}</ref> ;
* l'introduction de la fonction High Resolution Time `hrtime()` function<ref>{{lien web|url=https://php.net/manual/en/function.hrtime.php|titre=PHP: hrtime{{snd}} Manual|website=php.net}}</ref>.
 
==== Version 7.2 ====
 
Le {{date-|30 Novembre 2017}}, la version de PHP 7.2, qui utilise ''Zend Engine 2'', a introduit une [[Programmation orientée objet|modélisation objet]] plus performante, une gestion des erreurs fondée sur le modèle des exceptions, ainsi que des fonctionnalités de gestion pour les entreprises. PHP 5 apporte beaucoup de nouveautés, telles que le support de [[SQLite]] ainsi que des moyens de manipuler des fichiers et des structures [[Extensible Markup Language|XML]] basés sur ''libxml2'' :
* une [[Interface de programmation|API]] simple nommée [[SimpleXML]] ;
* une [[Interface de programmation|API]] [[Document Object Model]] assez complète ;
* une interface [[XPath]] utilisant les objets DOM et SimpleXML ;
* l'intégration de libxslt pour les transformations [[Extensible Stylesheet Language Transformations|XSLT]] via l'extension [[Extensible stylesheet language|XSL]] ;
* une bien meilleure gestion des objets par rapport à PHP 4, avec des possibilités qui tendent à se rapprocher de celles de [[Java (langage)|Java]].
 
==== Version 7 (PHP7PHP 7) ====
 
Au vu des orientations différentes prises par le langage de celles prévues par PHP 6, une partie des développeurs propose de nommer la version succédant à PHP 5 « PHP 7 » au lieu de « PHP 6 ». Un vote parmi les développeurs valide cette proposition par 58 voix contre 24<ref>{{Lien web
Ligne 132 ⟶ 90 :
| url = https://wiki.php.net/rfc/php6
| consulté le=22 novembre 2014
}}.</ref>.
 
PHP 7.0.0 est sorti en {{date-|décembre 2015}}.
Ligne 144 ⟶ 102 :
| site = The Zend Blog
| consulté le = 22 novembre 2014
}}.</ref>{{,}}<ref>{{Lien web
| auteur = Antoine Crochet-Damais
| titre = Andi Gutmans (Zend Technologies) : "PHP Next Generation est plus performant que HHVM de Facebook"
Ligne 153 ⟶ 111 :
| site = Le Journal du Net
| consulté le = 22 novembre 2014
}}.</ref>. Les [[Test de performance|benchmarks]] externes montrent des performances similaires pour HHVM et PHP 7, avec un léger avantage d'HHVM dans la plupart des scénarios<ref>{{Lien web
| auteur = Zeev Suraski
| titre = Benchmarking PHPNG!
Ligne 161 ⟶ 119 :
| site = Zeev's blog
| consulté le = 22 novembre 2014
}}.</ref>.
 
==== PHP 6 et Unicode ====
 
En 2005, le projet de faire de PHP un langage fonctionnant d'origine en Unicode a été lancé par Andrei Zmievski, ceci en s'appuyant sur la bibliothèque [[International Components for Unicode]] (ICU) et en utilisant UTF-16 pour représenter les chaînes de caractères dans le moteur<ref>{{lien web|langue=en|url=http://marc.info/?l=php-internals&m=112365908921757&w=1|titre=PHP Unicode support design document (mailing list post)|date=2005-08-10|consulté le=2014-02-09|auteur=Andrei Zmievski}}.</ref>.
 
Étant donné que cela représentait un changement majeur tant dans le fonctionnement du langage que dans le code PHP créé par ses utilisateurs, il fut décidé d'intégrer cela dans une nouvelle version 6.0 avec d'autres fonctionnalités importantes alors en développement<ref>{{lien web|langue=en|url=http://news.php.net/php.internals/17668|titre=PHP 5.5 or 6.0|consulté le=2014-02-09}}.</ref>. Toutefois, le manque de développeurs experts en Unicode ainsi que les problèmes de performance résultant de la conversion des chaînes de et vers UTF-16 (rarement utilisé dans un contexte web), ont conduit au report récurrent de la livraison de cette version<ref>{{lien web|langue=en|titre=The Good, the Bad, and the Ugly: What Happened to Unicode and PHP 6|url=http://www.slideshare.net/andreizm/the-good-the-bad-and-the-ugly-what-happened-to-unicode-and-php-6|consulté le=2014-02-09|auteur=Andrei Zmievski}}.</ref>. Par conséquent, une version 5.3 fut créée en 2009 intégrant de nombreuses fonctionnalités non liées à Unicode qui était initialement prévues pour la version 6.0, notamment le support des espaces de nommage (namespaces) et des fonctions anonymes. En {{date-|mars 2010}}, le projet 6.0 intégrant unicodeUnicode fut abandonné et la version 5.4 fut préparée afin d'intégrer la plupart des fonctionnalités non liées à l'unicodeUnicode encore dans la branche 6.0, telles que les traits ou l'extension des fermetures au modèle objet<ref>{{lien web|langue=en|url=http://news.php.net/php.internals/47120|titre=PHP 6 (mailing list post)|consulté le=2014-02-07|date=2010-03-11|auteur=Rasmus Lerdorf}}.</ref>.
 
Le projet est depuis passé à un cycle de livraison prévisible (annuel) contenant des avancées significatives mais contenues tout en préservant au maximum la rétro-compatibilité avec le code PHP existant (5.4 en 2012, 5.5 en 2013, 5.6 prévue pour l'été 2014). Depuis {{date-|janvier 2014}}<ref>{{lien web|langue=en|url=http://news.php.net/php.internals/71481 |titre=Ruminations on PHP 5++ (message de liste de discussion)|consulté le=2014-02-07|date=2010-03-11|auteur=Adam Harvey}}.</ref>, l'idée d'une nouvelle version majeure introduisant Unicode mais se basant sur UTF-8 (largement devenu depuis le standard du Web pour l'Unicode) et permettant certains changements pouvant casser la rétro-compatibilité avec du code PHP ancien est de nouveau discutée et les RFC sont maintenant triées selon leur implémentation en 5.x (évolutions ne causant pas ou marginalement de cassure de la rétro-compatibilité) ou dans la future version majeure (évolutions majeures du moteur et évolutions impliquant une non-compatibilité ascendante).
 
Le projet est depuis passé à un cycle de livraison prévisible (annuel) contenant des avancées significatives mais contenues tout en préservant au maximum la rétro-compatibilité avec le code PHP existant (5.4 en 2012, 5.5 en 2013, 5.6 prévue pour l'été 2014). Depuis {{date-|janvier 2014}}<ref>{{lien web|url=http://news.php.net/php.internals/71481 |titre=Ruminations on PHP 5++ (message de liste de discussion)|consulté le=2014-02-07|date=2010-03-11|auteur=Adam harvey}}</ref>, l'idée d'une nouvelle version majeure introduisant Unicode mais se basant sur UTF-8 (largement devenu depuis le standard du Web pour l'Unicode) et permettant certains changements pouvant casser la rétro-compatibilité avec du code PHP ancien est de nouveau discutée et les RFC sont maintenant triées selon leur implémentation en 5.x (évolutions ne causant pas ou marginalement de cassure de la rétro-compatibilité) ou dans la future version majeure (évolutions majeures du moteur et évolutions impliquant une non-compatibilité ascendante).
==== À noter ====
 
Il est à noter qu'historiquement, PHP disposait d'une configuration par défaut privilégiant la souplesse à la sécurité (par exemple register globals, qui a été activé par défaut jusqu'à PHP 4.2<ref>{{Lien web|titre=Register Globals|url=http://php.net/manual/en/security.globals.php}}.</ref>). Cette souplesse a permis à de nombreux développeurs d'apprendre PHP mais le revers de la médaille a été que de nombreuses applications PHP étaient mal sécurisées. Le sujet a bien été pris en main par le PHPGroup qui a mis en place des configurations par défaut mettant l'accent sur la sécurité. Il en résultait une réputation de langage peu sécurisé, {{référence nécessaire|réputation d'insécurité qui n'a plus de raison d'être}}.
 
==== Détail de l'historique completHistorique des versions ====
 
Un historique détaillé de toutes les versions de PHP est disponible sur [https://www.php.net/releases/ cette page]. Un tableau des versions supportées est aussi disponible sur le site officiel [https://www.php.net/supported-versions.php ici].
 
Le tableau ci dessous référence les principales versions et les changements les plus notables.
 
{| class="wikitable sortable mw-collapsible mw-collapsed" style="width:100%"
|+ Historique des versions
! scope="col" data-sort-type=text | Version majeure
! scope="col" data-sort-type=text | Version mineure
! scope="col" data-sort-type=date | SupportDate de sortie
! scope="col" class="unsortable" | Date de sortieNotes
! scope="col" | Notes
|-
! 1.0
| {{Version |o |1.0.0}}
| {{Date |8 juin 1995}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Appelé officiellement « Personal Home Page Tools (PHP Tools) », outils pour page personnelle. C'est la première apparition du nom « PHP »<ref name="history">{{en}} {{Lien web|Consulté le=18 juin 2010|url=http://www.php.net/manual/en/history.php.php|titre=History of PHP|éditeur=The PHP Group }}.</ref>.
|{{date-|8 juin 1995}}
|Appelé officiellement « Personal Home Page Tools (PHP Tools) », outils pour page personnelle. C'est la première apparition du nom « PHP »<ref name="history">{{en}} {{Lien web|Consulté le=18 juin 2010|url=http://www.php.net/manual/en/history.php.php|titre=History of PHP|éditeur=The PHP Group }}</ref>.
|-
! 2.0
| {{Version |o |2.0.0}}
| {{Date |12 novembre 1997}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
|{{date-|12 novembre 1997}}
|
|-
! 3.0
| {{Version |o |3.0.0}}
| {{Date |6 juin 1998}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Passage d'une personne à une équipe de développeurs. Zeev Suraski et Andi Gutmans réécrivent la base de cette version<ref name="history" />.
|{{date-|6 juin 1998}}
|Passage d'une personne à une équipe de développeurs. Zeev Suraski et Andi Gutmans réécrivent la base de cette version<ref name="history" />.
|-
! rowspan="5" |4.0
| {{Version |o |4.0.0}}
| {{Date |22 mai 2000}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Ajout d'un système d'[[analyse syntaxique]] plus avancé appelé le Zend Engine. Ce moteur procède en deux étapes d'analyse puis d'exécution.
|{{date-|22 mai 2000}}
|Ajout d'un système d'[[analyse syntaxique]] plus avancé appelé le Zend Engine. Ce moteur procède en deux étapes d'analyse puis d'exécution.
|-
| {{Version |o |4.1.0}}
| {{Date |10 décembre 2001}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Introduit les ''superglobals'' (<code>$_GET</code>, <code>$_POST</code>, <code>$_SESSION</code>, etc.)
|{{date-|10 décembre 2001}}
|Introduit les ''superglobals'' (<code>$_GET</code>, <code>$_POST</code>, <code>$_SESSION</code>, etc.)
|-
| {{Version |o |4.2.0}}
| {{Date |22 avril 2002}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Désactive register_globals par défaut. Les données en provenance du réseau ne sont plus insérées directement dans l'espace de nom [[variable globale|global]], réduisant ainsi les possibilités de failles de sécurité
|{{date-|22 avril 2002}}
|Désactive register_globals par défaut. Les données en provenance du réseau ne sont plus insérées directement dans l'espace de nom [[variable globale|global]], réduisant ainsi les possibilités de failles de sécurité
|-
| {{Version |o |4.3.0}}
| {{Date |27 décembre 2002}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Introduit le [[Interface en ligne de commande|CLI]], en addition au [[Common Gateway Interface|CGI]].
|{{date-|27 décembre 2002}}
|Introduit le [[Interface en ligne de commande|CLI]], en addition au [[Common Gateway Interface|CGI]].
|-
| {{Version |o |4.4.0}}
| {{Date |11 juillet 2005}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Ajout du manuel (pages accessibles par la commande <code>man</code>) pour les scripts <code>phpize</code> et <code>php-config</code>.
|{{date-|11 juillet 2005}}
|Ajout du manuel (pages accessibles par la commande <code>man</code>) pour les scripts <code>phpize</code> et <code>php-config</code>.
|-
! rowspan="1"7 |5.0
| {{Version |o |5.0.0}}
| {{Date |13 juillet 2004}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
|Zend Engine II avec un nouveau modèle objet<ref name="php5changelog">{{en}} {{Lien web|titre=PHP: PHP 5 ChangeLog|url=http://www.php.net/ChangeLog-5.php|éditeur=The PHP Group|consulté le=22 février 2008|date=8 novembre 2007}}.</ref>.
|{{date-|13 juillet 2004}}
|Zend Engine II avec un nouveau modèle objet<ref name="php5changelog">{{en}} {{Lien web|titre=PHP: PHP 5 ChangeLog|url=http://www.php.net/ChangeLog-5.php|éditeur=The PHP Group|consulté le=22 février 2008|date=8 novembre 2007}}</ref>.
|-
!| rowspan="1"{{Version |o |5.1}}
| {{Date |24 novembre 2005}}
| 5.1.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
|{{date-|24 novembre 2005}}
|Amélioration de performances par l'introduction de variables de compilation dans un moteur PHP repensé<ref name="php5changelog" />.
|-
| {{Version |o |5.2}}
!5.2
| {{Date|2 novembre 2006}}
| 5.2.0
| Activation par défaut de l'extension «filter»<ref name="php5changelog" />.
| style="background-color:#fa8072;" | Ancienne version, non supportée
|{{date-|2 novembre 2006}}
|Activation par défaut de l'extension «filter»<ref name="php5changelog" />.
|-
!| rowspan="2"{{Version |o |5.3}}
| {{Date |30 juin 2009}}<ref>{{en}} [http://www.php.net/archive/2009.php#id2009-06-30-1 PHP 5.3.0 Released!]</ref>
| 5.3.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|30 juin 2009}}<ref>{{en}} [http://www.php.net/archive/2009.php#id2009-06-30-1 PHP 5.3.0 Released!]</ref>
| Support des [[Espace de noms (programmation)|espaces de noms]] ; [[Late Static Bindings]] (résolution statique à la volée) ; étiquettes de saut ([[goto (informatique)|goto]] limité) ; [[Fermeture (informatique)|fermetures]] (closures) ; [[Native PHP archives]] (phar) ; [[Ramasse-miettes (informatique)|ramasse-miettes]] de références cycliques ; connexion persistante avec [[MySQLi]], sqlite3 ; ajout de fileinfo en tant que remplacement de mime_magic pour un meilleur support de [[MIME]] ; raccourci pour l’opérateur ternaire (?:) ; [[fonction anonyme|fonctions anonymes]] ; nombreuses corrections de bogue<ref>{{en}} [http://php.net/ChangeLog-5.php#5.3.0 PHP 5.3.0 Changelog]</ref>...
|-
| {{Version |o |5.4}}
| 5.3.3
| {{Date |1 mars 2012}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| Support des [[Trait (programmation)|traits]] ; syntaxe courte des tableaux introduite ; accès aux index de tableaux en sortie de fonctions ; les fermetures supportent $this ; <?= toujours disponible ; accès aux attributs d'un objet dès l'instanciation ; ajout syntaxe Class::{expr}() ; ajout format de nombres binaires ; suivi des envois de fichiers via l'extension de session ; serveur web embarqué en CLI<ref name="php.net">{{lien web|url=http://php.net/manual/fr/features.commandline.webserver.php|titre=PHP: Serveur web interne - Manual|site=php.net}}.</ref> dédié au développement ; support de [[Dtrace]] ; suppression des extensions ''magic quotes'', ''safe_mode'', ''register_globals'' et ''register_long_array''<ref name="php.net" />.
| {{date-|22 juillet 2010}}
| Introduit [[PHP-FPM]]<ref>{{en}} [https://groups.google.com/group/highload-php-en/browse_thread/thread/8af45714ab362c41?pli=1 FPM in 5.3]</ref>
|-
!| rowspan="2"{{Version |o |5.45}}
| {{Date |20 juin 2013}}
| 5.4.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|1 mars 2012}}
| Support des [[Trait (programmation)|traits]] ; syntaxe courte des tableaux introduite ; accès aux index de tableaux en sortie de fonctions ; les fermetures supportent $this ; <?= toujours disponible ; accès aux attributs d'un objet dès l'instanciation ; ajout syntaxe Class::{expr}() ; ajout format de nombres binaires ; suivi des envois de fichiers via l'extension de session ; serveur web embarqué en CLI<ref name="php.net">{{lien web|url=http://php.net/manual/fr/features.commandline.webserver.php|titre=PHP: Serveur web interne - Manual|site=php.net}}</ref> dédié au développement ; support de [[Dtrace]] ; suppression des extensions ''magic quotes'', ''safe_mode'', ''register_globals'' et ''register_long_array''<ref name="php.net" />.
|-
| 5.4.26
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|6 mars 2014}}
| Ajout de [https://wiki.php.net/rfc/ldap_modify_batch ldap_modify_batch()]
|-
! rowspan="7" |5.5
| 5.5.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|20 juin 2013}}
| Support des [[Générateur (informatique)|générateurs]] et des [[coroutine]]s ; ajout d'une [[Interface de programmation|API]] de [[Fonction de hachage|hachage]] des mots de passe ; intégration en standard du système de [[Mémoire cache|cache]] Zend OPcache<ref>{{en}} [http://php.net/archive/2013.php#id2013-06-20-1 PHP 5.5.0 released.]</ref> ; correction de nombreux bogues ; arrêt du support de [[Windows XP]] et [[Windows Server 2003]] ; mise à jour de la bibliothèque [[GD (bibliothèque)|GD]] ; les fonctions mysql_ sont maintenant considérées comme obsolètes (mise en avant de mysqli_ et de PDO_MySQL).
|-
| {{Version |o |5.6}}
| 5.5.4
| {{Date |28 août 2014}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|19 septembre 2013}}
| Amélioration de fputcsv().
|-
| 5.5.5
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|17 octobre 2013}}
| Nouvelle fonction opcache_compile_file(), support du système GNU Hurd, ajout du type MIME application/pdf dans le serveur de développement.
|-
| 5.5.6
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|14 novembre 2013}}
| Amélioration des performances de array_merge() et func_get_args().
|-
| 5.5.7
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|12 décembre 2013}}
| Ajout du support de getallheaders() et de types MIME dans le serveur de développement, ajout de apache_response_headers().
|-
| 5.5.10
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|6 mars 2014}}
| Passage à PCRE 8.34. Ajout de [https://wiki.php.net/rfc/ldap_modify_batch ldap_modify_batch()]
|-
| 5.5.13
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|29 mai 2014}}
| Ajout des types MIME xsl/xml au serveur de développement intégré.
|-
! rowspan="3" |5.6
| 5.6.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|28 août 2014}}
| Nouvelle syntaxe pour les [[Fonction variadique|fonctions à paramètres variables]] et dépaquetage de paramètres, importation de fonctions au sein d'[[Espace de noms (programmation)|espaces de noms]], intégration du [[débogueur]] phpdbg en standard, amélioration de l'extension zip, expressions acceptées pour la définition de constantes, amélioration de la gestion des [[Hypertext Transfer Protocol#M.C3.A9thodes|données POST]], support de la [[Définition d'opérateur|surcharge d'opérateurs]] dans le Zend Engine, nouvelle méthode magique __debugInfo() fournissant des informations de débogage sur les objets, améliorations diverses sur le support de [[Transport Layer Security|SSL/TLS]], ajout de l'opérateur d'[[exponentiation]] « <code>**</code> », téléchargements de poids supérieur à {{unité|2|Go}} désormais supportés.
|-
! rowspan=5 |7
| 5.6.32
| {{Version |o |7.0}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-Date |263 octobredécembre 20172015}}
| Correction de 3 bogues (Date, mcrypt, PCRE)
|-
| 5.6.33
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|04 janvier 2018}}
| Correction de 2 bogues (GD, Phar)
|-
! rowspan="10" |7.0
| 7.0.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|3 décembre 2015}}
| Performance améliorée grâce au moteur « phpng » (jusqu'à deux fois plus rapide que PHP 5.6), support homogène des architectures 64 bits, ajout d'[[Système de gestion d'exceptions|exceptions]] permettant d'intercepter des erreurs fatales, ajout des opérateurs « <code>??</code> » (dit « {{Lien|langue=en|fr=Null coalescing operator|texte=null coalescing}} ») et « <code><=></code> » (dit « combined comparison »), possibilité de déclarer explicitement le type retourné par une fonction ainsi que les types scalaires des arguments, support des classes anonymes<ref>{{en}} [http://php.net/archive/2015.php#id2015-12-03-1 PHP 7.0.0 Released]</ref>...
|-
| {{Version |o |7.1}}
| 7.0.25
| {{Date |1 décembre 2016}}
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|26 octobre 2017}}<ref>{{en}} [http://php.net/ChangeLog-7.php#7.0.25]</ref>
| Correction de 14 bogues.
|-
| 7.0.26
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|23 novembre 2017}}<ref>{{en}} [http://php.net/ChangeLog-7.php#7.0.26]</ref>
| Correction de 18 bogues.
|-
| 7.0.27
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|04 janvier 2018}}
| Correction de 11 bogues.
|-
| 7.0.28
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|27 février 2018}}
| Correction de bogues.
|-
| 7.0.29
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|29 mars 2018}}
| Correction de 1 bogue.
|-
| 7.0.30
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|26 avril 2018}}
| Correction de 4 bogues.
|-
| 7.0.31
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|19 juillet 2018}}
| Correction de 3 bogues.
|-
| 7.0.32
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|13 septembre 2018}}
| Correction de 1 bogues : Apache2 (XSS)
|-
| 7.0.33
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|06 décembre 2018}}
| Correction de 5 bogues : Core, IMAP, Phar
|-
! rowspan="18" |7.1
| 7.1.0
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|1 décembre 2016}}
| {{Lien|langue=en|trad=Nullable type|fr=Type nullable|texte=Types nullables}}, type de retour <code>[[void]]</code>, pseudo-type <code>iterable</code>, visibilité des constantes de classes, améliorations de <code>list()</code>, catch de plusieurs types d'exception{{etc.}}<ref>{{en}} [http://php.net/archive/2016.php#id2016-12-01-3 PHP 7.1.0 Released]</ref>
|-
| {{Version |o |7.2}}
| 7.1.1
| {{Date |30 novembre 2017}}<ref>{{en}} [http://www.php.net/ChangeLog-7.php#7.2.0]</ref>
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|19 janvier 2017}}<ref>{{en}} [http://php.net/ChangeLog-7.php#7.1.1 PHP 7.1.1 Released]</ref>
| Correction de 33 bogues et optimisation mémoire de mysqlnd.
|-
| 7.1.3
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|16 mars 2017}}<ref>{{en}} [http://www.php.net/ChangeLog-7.php#7.1.3 PHP 7.1.3 Released]</ref>
| 24 Correction de bogues|Correction de 24 bogues.
|-
| 7.1.11
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|27 octobre 2017}}<ref>{{en}} [https://secure.php.net/ChangeLog-7.php#7.1.11 Released]</ref>
| 19 Correction de bogues|Correction de 19 bogues.
|-
| 7.1.12
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|23 novembre 2017}}<ref>{{en}} [https://secure.php.net/ChangeLog-7.php#7.1.12 Released]</ref>
| 18 Correction de bogues|Correction de 18 bogues.
|-
| 7.1.13
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|04 janvier 2018}}
| 20 Correction de bogues|Correction de 20 bogues.
|-
| 7.1.14
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|01 février 2018}}
| Correction de bogues|Correction de bogues.
|-
| 7.1.15
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|01 mars 2018}}
| Correction de 12 bogues|Correction de 12 bogues.
|-
| 7.1.16
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|29 mars 2018}}
| Correction de 9 bogues|Correction de 9 bogues.
|-
| 7.1.17
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|26 avril 2018}}
| Correction de 14 bogues|Correction de 14 bogues.
|-
| 7.1.18
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|24 mai 2018}}
| Correction de 6 bogues|Correction de 6 bogues.
|-
| 7.1.19
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|22 juin 2018}}
| Correction de 6 bogues|Correction de 6 bogues.
|-
| 7.1.20
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|19 juillet 2018}}
| Correction de 15 bogues|Correction de 15 bogues.
|-
| 7.1.21
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|16 août 2018}}
| Correction de 16 bogues sur : Calendar, Filter, PDO_Firebird, PDO_PgSQL, SQLite3, Standard & Zip
|-
| 7.1.22
| style="background-color:#fa8072;" | Ancienne version, non supportée
| 13 sept 2018
| Correction de 20 bogues sur : Core, Apache2, Bz2, gettext, iconv, intl, libxml, mbstring, Opcache, OpenSSL, phpdbg, SPL, Standard & libzip
|-
| 7.1.23
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|11 octobre 2018}}
| Correction de 11 bogues sur : Core, cURL, iconv, Opcache, POSIX, Reflection, Standard, Zlib
|-
| 7.1.24
| style="background-color:#fa8072;" | Ancienne version, non supportée
| {{date-|08 novembre 2018}}
| Correction de 11 bogues sur : Core, date, FCGI, FTP, intl, Standard, Tidy, XML
|-
| 7.1.25
| style="background-color:#fa8072;" | Ancienne version, non supportée
| 06 decembre 2018
| Correction de 13 bogues sur : Core, FTP, iconv, IMAP, OBDC, Opcache, Phar, PGSQL, SOAP, Sockets
|-
! rowspan="21" |7.2
| 7.2.0
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|30 novembre 2017}}<ref>{{en}} [http://www.php.net/ChangeLog-7.php#7.2.0]</ref>
| Ajout de l'interface <code>Countable</code>, de la constante <code>PHP_OS_FAMILY</code>, etc.
|-
| {{Version |o |7.3}}
| 7.2.1
| {{Date | 29 novembre 2018}}<ref name="php73">{{Lien web|langue=en|titre=PHP 7.3.x changeLogs|url=https://www.php.net/ChangeLog-7.php#7.3.0|site=php.net|consulté le=2020-05-21}}.</ref>
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| Syntaxe Heredoc et Nowdoc plus flexibles, virgule de fin dans l’appel de fonction, <code>JSON_THROW_ON_ERROR</code>, affectation par référence avec la fonction <code>list()</code>, <code>is_countable()</code>, <code>array_key_first()</code> et <code>array_key_last()</code>, algorithme de hachage [[Argon2]]id, etc.<ref>{{Lien web|langue=fr-FR|titre=Nouveautés de PHP 7.3 – CODE{{!}}DESIGN•fr|url=https://codedesign.fr/php-7-3-nouveautes/|site=codedesign.fr|consulté le=2018-09-15}}.</ref>
| {{date-|4 janvier 2018}}<ref name="php72">{{en}} [https://www.php.net/ChangeLog-7.php#7.2.0]</ref>
| 21 Correction de bogues|Correction de 21 bogues.
|-
| {{Version |o |7.4}}
| 7.2.2
| {{Date |28 novembre 2019}}
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| Propriétés typées 2.0, préchargement, opérateur d’affectation par coalescence nulle, <code>openssl_random_pseudo_bytes</code> peut lancer une exception, ajout des références faibles, l’extension de hash de l’interface FFI (Foreign Function Interface) est toujours obligatoire, registre des hashs de mots de passe, split sur les chaînes multi‐octets, réflexion pour les références, unbundle ext/wddx, nouveau mécanisme de sérialisation personnalisée des objets et correction de multiples bogues<ref name="php74">{{Lien web|langue=en|titre=PHP 7.4.x changeLogs|url=https://www.php.net/ChangeLog-7.php#7.4.0|site=php.net|consulté le=2019-12-23}}.</ref>.
| {{date-|1 février 2018}}<ref name="php72" />
| 25 Correction de bogues|Correction de 25 bogues.
|-
! rowspan=5 |8
| 7.2.3
| {{Version |o |8.0}}
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-Date |0126 marsnovembre 20182020}}<ref name="php72php80" />
| Corrections de 18 bogues|Corrections de 18 bogues.
|-
| 7.2.4
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|29 mars 2018}}<ref name="php72" />
| Corrections de 16 bogues|Corrections de 16 bogues.
|-
| 7.2.5
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|26 avril 2018}}<ref name="php72" />
| Corrections de 18 bogues|Corrections de 18 bogues.
|-
| 7.2.6
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|24 mai 2018}}<ref name="php72" />
| Corrections de 8 bogues|Corrections de 8 bogues.
|-
| 7.2.7
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|21 juin 2018}}<ref name="php72" />
| Corrections de 7 bogues|Corrections de 7 bogues.
|-
| 7.2.8
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|19 juillet 2018}}<ref name="php72" />
| Corrections de 19 bogues|Corrections de 19 bogues.
|-
| 7.2.9
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| 16 aout 2018<ref name="php72" />
| Corrections de 9 bogues|Corrections de 9 bogues.
|-
| 7.2.10
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| 13 sept 2018<ref name="php72" />
| Corrections de 19 bogues|Corrections de 19 bogues.
|-
| 7.2.11
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|11 octobre 2018}}<ref name="php72" />
| Corrections de 13 bogues|Corrections de 13 bogues.
|-
| 7.2.12
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|08 novembre 2018}}<ref name="php72" />
| Corrections de 20 bogues|Corrections de 20 bogues.
|-
| 7.2.13
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|06 décembre 2018}}<ref name="php72" />
| Corrections de 16 bogues|Corrections de 16 bogues.
|-
| 7.2.14
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|10 janvier 2019}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.15
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|7 février 2019}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.16
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|7 mars 2019}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.31
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|14 mai 2020}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.32
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|09 juillet 2020}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.33
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|06 août 2020}}<ref name="php72" />
|Corrections de bogues.
|-
| 7.2.34
| style="background-color:orange;" | Ancienne version, correctifs de sécurité uniquement
| {{date-|1er octobre 2020}}<ref name="php72" />
|Corrections de bogues.
|-
! rowspan="25" |7.3
| 7.3.0
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
| {{date-|29 novembre 2018}}<ref name="php73">{{Lien web|langue=en|titre=PHP 7.3.x changeLogs|url=https://www.php.net/ChangeLog-7.php#7.3.0|site=www.php.net|consulté le=2020-05-21}}</ref>
| Syntaxe Heredoc et Nowdoc plus flexibles, virgule de fin dans l’appel de fonction, <code>JSON_THROW_ON_ERROR</code>, affectation par référence avec la fonction <code>list()</code>, <code>is_countable()</code>, <code>array_key_first()</code> et <code>array_key_last()</code>, algorithme de hachage [[Argon2]]id, etc.<ref>{{Lien web|langue=fr-FR|titre=Nouveautés de PHP 7.3 – CODE{{!}}DESIGN•fr|url=https://codedesign.fr/php-7-3-nouveautes/|site=codedesign.fr|consulté le=2018-09-15}}</ref>
|-
|7.3.1
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|10 janvier 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.2
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|7 février 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.3
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|7 mars 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.4
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|4 avril 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.5
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|2 mai 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.6
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|30 mai 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.7
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|4 juillet 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.8
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|01 aout 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.9
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|29 août 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.10
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|26 septembre 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.11
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|24 octobre 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.12
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|21 novembre 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.13
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|18 décembre 2019}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.14
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|23 janvier 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.15
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|20 février 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.16
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|19 mars 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.17
| style="background-color:#e2f700;" |Ancienne version, améliorations et correctifs de sécurité
|{{Date-|16 avril 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.18
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|14 mai 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.19
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|11 juin 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.20
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|09 juillet 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.21
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|06 août 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.22
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|03 septembre 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.23
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|1er octobre 2020}}<ref name="php73" />
|Corrections de bogues.
|-
|7.3.24
| style="background-color:#e2f700;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|29 octobre 2020}}<ref name="php73" />
|Corrections de bogues.
|-
! rowspan="14" |7.4
| 7.4.0
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
| {{date-|28 novembre 2019}}
| Propriétés typées 2.0, préchargement, opérateur d’affectation par coalescence nulle, <code>openssl_random_pseudo_bytes</code> peut lancer une exception, ajout des références faibles, l’extension de hash de l’interface FFI (Foreign Function Interface) est toujours obligatoire, registre des hashs de mots de passe, split sur les chaînes multi‐octets, réflexion pour les références, unbundle ext/wddx, nouveau mécanisme de sérialisation personnalisée des objets et correction de multiples bogues<ref name="php74">{{Lien web|langue=en|titre=PHP 7.4.x changeLogs|url=https://www.php.net/ChangeLog-7.php#7.4.0|site=php.net|consulté le=2019-12-23}}</ref>.
|-
|7.4.1
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|18 décembre 2019}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.2
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|23 janvier 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.3
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|20 février 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.4
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|19 mars 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.5
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|16 avril 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.6
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|14 mai 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.7
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|11 juin 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.8
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|09 juillet 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.9
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|06 août 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.10
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|03 septembre 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.11
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|1er octobre 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.12
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|29 octobre 2020}}<ref name="php74" />
|Corrections de bogues.
|-
|7.4.13
| style="background-color:#A0E75A;" | Ancienne version, améliorations et correctifs de sécurité
|{{Date-|26 novembre 2020}}<ref name="php74" />
|Corrections de bogues.
|-
! rowspan="1" |8.0
| 8.0.0
| style="background-color:#A0E75A;" | Version actuelle, améliorations et correctifs de sécurité
|{{Date-|26 novembre 2020}}<ref name="php80" />
|« Compilation à la volée » (Just-in-time compilation <ref name="r1" />), unions de types, type « mixed », type de retour « static », paramètres nommés, opérateur « nullsafe », mot-clé « match », ...
|-
!| rowspan="7"{{Version |co |8.1}}
| {{Date |25 novembre 2021}}
| 8.1.0
|Nouvelles fonctionnalités:
| style="background-color:#87CEEB;" | Version actuelle, améliorations et correctifs de sécurité
* les énumérations;
|25 novembre 2021
* les fibers pour créer des [[coroutines]];
|
* la propriété <code>readonly</code> pour empêcher une variable d'être modifié;
 
et d'autres<ref>{{Lien web |langue=fr |titre=PHP: PHP 8.1.0 Release Announcement |url=https://www.php.net/releases/8_1_0.php |site=www.php.net |consulté le=2024-12-29}}</ref>.
|-
| {{Version |c |8.2}}
|8.1.1
| {{Date |8 décembre 2022}}
|Version actuelle, améliorations et correctifs de sécurité
| Nouvelles fonctionnalités:
|16 décembre 2021
* les classes en lecture seule : <code>readonly class</code> signifie que tous les arguments de son constructeur sont implicitement en <code>readonly</code>;
|Corrections de bogues.
* les types <code>null</code>, <code>true</code> et <code>false</code>;
* les constantes dans les traits ;
* la [[forme normale disjonctive]] de type (combinaison de l'union et de l'intersection);
 
et d'autres<ref>{{Lien web |langue=fr |titre=PHP: PHP 8.2.0 Release Announcement |url=https://www.php.net/releases/8_2_0.php |site=www.php.net |consulté le=2024-12-29}}</ref>.
|-
| {{Version |c |8.3}}
|8.1.2
| {{Date |23 novembre 2023}}
|Version actuelle, améliorations et correctifs de sécurité
| Nouvelles fonctionnalités:
|21 janvier 2022
* constantes de classe typées;
|Corrections de bogues.
* une nouvelle fonction <code>json_validate()</code>;
* clonage en profondeur des propriétés de <code>readonly</code>;
* nouvel attribut <code>#[\Override]</code>;
* récupération dynamique des constantes de classe et des membres de l’Enum;
* nouvelle méthode <code>getBytesFromString()</code>;
* nouvelles méthodes <code>getFloat()</code> et <code>nextFloat()</code>;
 
et d'autres<ref>{{Lien web |langue=fr |titre=PHP: PHP 8.3.0 Release Announcement |url=https://www.php.net/releases/8_3_0.php |site=www.php.net |consulté le=2024-12-29}}</ref>.
|-
| {{Version |c |8.4}}
|8.1.3
| {{Date |21 novembre 2024}}
|Version actuelle, améliorations et correctifs de sécurité
| Nouvelles fonctionnalités:
|17 février 2022
* propriété avec hooks;
|Corrections de bogues.
* visibilité asymétrique des propriétés;
* objets paresseux;
* nouvel attribut <code>#[\Deprecated]</code>;
* nouveau type <code>BcMath\Number</code>;
 
et d'autres<ref>{{Lien web |langue=fr |titre=PHP: PHP 8.4 Release Announcement |url=https://www.php.net/releases/8.4/fr.php |site=www.php.net |consulté le=2024-12-29}}</ref>.
|-
| colspan=4 |{{Version | l | show=111100}}
|8.1.4
|Version actuelle, améliorations et correctifs de sécurité
|17 mars 2022
|Corrections de bogues.
|-
|8.1.5
|Version actuelle, améliorations et correctifs de sécurité
|14 avril 2022
|Corrections de bogues.
|-
|8.1.6
|Version actuelle, améliorations et correctifs de sécurité
|12 mai 2022
|Corrections de bogues.
|-
!8.2
|8.2.0
|
|8 décembre 2022
|
|-
!8.3
|8.3.0
|
|23 novembre 2023
|
|}
 
<br>
 
== Fonctionnement ==
Ligne 881 ⟶ 342 :
Les notations autres que la standard (<code><?php</code> et <code>?>)</code> et la notation courte avec affichage (<code><?=</code> et <code>?>)</code> sont déconseillées, car elles peuvent être désactivées dans la configuration du serveur (php.ini ou .htaccess) : la portabilité du code est ainsi réduite.
 
Depuis PHP 7, les notations ASP et script ont été supprimées<ref>{{Lien web|langue = anglais|titre = PHP RFC: Remove alternative PHP tags|url = https://wiki.php.net/rfc/remove_alternative_php_tags}}.</ref>. La notation courte sans affichage reste déconseillée.
 
=== Instructions ===
Ligne 996 ⟶ 457 :
</syntaxhighlight>
 
PHP, tout comme [[JavaScript]], permet aussi de construire un modèle objet de document (''DOM'')<ref>{{lien web|url=http://php.net/manual/fr/book.dom.php|titre=PHP: DOM - Manual|site=php.net}}.</ref>, ce qui permet de créer ou modifier un document (X)HTML sans écrire de HTML, comme le montre l'exemple suivant :
<syntaxhighlight lang="php">
<?php
Ligne 1 046 ⟶ 507 :
Comme en C++ et en Java, PHP permet de programmer en orienté objet, en créant des classes contenant des attributs et des méthodes, qui peuvent être instanciées ou utilisées en statique.
 
Toutefois, PHP est un langage à héritage simple<ref>{{Ouvrage|prénom1=Sébastien|nom1=Rohaut|titre=Algorithmique : Techniques fondamentales de programmation (avec des exemples en PHP)|éditeur=Editions ENI|année=2009|lire en ligne=https://books.google.fr/books?id=IfEft8zQgQcC&pg=PT362&q=%22PHP+autorise+l%27h%C3%A9ritage+simple+mais+pas+l%27h%C3%A9ritage+multiple%22}}</ref>, c'est-à-dire qu'une classe ne peut hériter que d'au plus une seule autre classe (sinon il faut utiliser un [[Trait (programmation)|trait]] pour simuler l'héritage multiple par composition). Cependant les interfaces peuvent en étendre plusieurs autres<ref>{{lien web|url=http://php.net/manual/fr/language.oop5.interfaces.php|titre=PHP: Interfaces - Manual|site=php.net}}.</ref>.
 
Voici un exemple de création d'une classe :
Ligne 1 060 ⟶ 521 :
class Perso implements EtreVivant
{
public const int PV_INITIAL = 2000;
 
private int $pv = 0;
Ligne 1 106 ⟶ 567 :
unset($mage);
</syntaxhighlight>
 
== Mascotte ==
 
[[Fichier:elephpant.png|vignette|L'éléPHPant, la mascotte de PHP.]]
 
Comme de nombreux projets Open Source, PHP possède une mascotte. Il s'agit de l'éléPHPant, dessiné en 1998 par El Roubio<ref>{{lien web|url=http://www.elroubio.net/?p=elephpant|titre=Elroubio - elePHPant creator since 1995|site=www.elroubio.net}}</ref>.
 
El Roubio s'est inspiré de la ressemblance des lettres PHP avec un [[éléphant]] et du fait que deux des lettres du langage soient déjà présentes dans ce mot, ce qui a permis de créer le néologisme éléPHPant. Toutes les œuvres d'El Roubio sont distribuées sous licence [[Licence publique générale GNU|GNU GPL]]. Une [[peluche]] de l'''ÉléPHPant''<ref>{{lien web|url=http://www.elephpant.com/|titre=Adopt your elePHPant!|nom=elephpant|site=www.elephpant.com}}</ref> bleu existe. D'autres versions ont vu le jour ces dernières années (rose, jaune, rouge, violet et orange) sous l'impulsion de sociétés (PHP Architect ou Zend Technologies) ou de groupes utilisateurs comme PHP Women ou PHP Amsterdam.
 
Le site afieldguidetoelephpants.net recense tous les éléphpants existants<ref>{{lien web|url=https://afieldguidetoelephpants.net/|titre=A field Guide to Elephpants}}</ref>.
 
== Exemples d'application ==
 
<!-- Le nombre d'exemples est limité à 3 par type d'application. -->
* Encyclopédie ([[Wiki]], ([[MediaWiki]], [[DokuWiki]].., etc.)
* [[forumForum (informatique)|forumForum]] ([[phpBB]], [[Vanilla Forums|Vanilla]], [[Invision Power Board|IPB]], [[punBB]].., etc.)
* Réseau social ([[Facebook]], etc.)
* Systèmes de gestion de [[blog]] ([[Dotclear]], etc.)
* [[Système de gestion de contenu|Systèmes de gestion de contenu]] (appelés aussi ''CMS'') ([[WordPress]], [[Système de publication pour l'internet partagé|SPIP]], [[ExpressionEngine]], [[Drupal]], [[Xoops]], [[Joomla]], [[K-Box]]..etc.)
* [[Système de gestion de base de données|Administration de bases de données]] ([[phpMyAdmin]], [[phpPgAdmin]], [[Adminer]].., etc.)
* [[Framework]]s ([[Laravel]], [[Symfony]], [[Zend Framework]], [[CodeIgniter]], [[CakePHP]], [[Liste de frameworks PHP|etc.]])
* Logiciel [[Gestion de contenu|ECM]]
* Logiciel [[Business Process Management|BPM]], [[Gestion de la relation client|CRM]] et ou [[Progiciel de gestion intégré|ERP]] ([[Dolibarr]].., etc.)
* [[Commerce électronique|E-commerce]] ([[PrestaShop]], [[WooCommerce]], [[Magento]], [[osCommerce]], [[Sylius]], etc.)
* Partis politiques ([[Parti chrétien-démocrate (France)]], etc.)
* Universités et formations supérieures alliant art et sciences (Ingénieur IMAC<ref>{{Lien web|titre=IMAC - La seule formation publique d’ingénieur alliant Arts et Sciences|url=http://ingenieur-imac.fr/|site=ingenieur-imac.fr|consulté le=2019-10-16}}</ref>, UPEM, etc.)
 
== Plateformes ==
Ligne 1 145 ⟶ 594 :
== Accélération ==
 
PHP est à la base un langage interprété, ce qui est au détriment de la vitesse d'exécution du code. Sa forte popularité associée à son utilisation sur des sites Web à très fort trafic ([[Yahoo]], [[Facebook]]<ref>{{lien web|url=https://arstechnica.com/business/2011/12/facebook-looks-to-fix-php-performance-with-hiphop-virtual-machine.|titre=Facebook looks to fix PHP performance with HipHop virtual machine}}.</ref>) ont amené un certain nombre de personnes à chercher à améliorer ses performances pour pouvoir servir un plus grand nombre d'utilisateurs de ces sites Web sans nécessiter l'achat de nouveaux serveurs.
 
La réécriture du cœur de PHP, qui a abouti au [[Zend Engine]] pour PHP 4 puis au Zend Engine 2 pour PHP 5, est une optimisation. Le Zend Engine compile en interne le code PHP en [[bytecode]] exécuté par une [[machine virtuelle]]. Les projets [[open source]] [[Alternative PHP Cache|APC]] et [[eAccelerator]] fonctionnent en mettant le bytecode produit par Zend Engine en [[Mémoire cache|cache]] afin d'éviter à PHP de charger et d'analyser les scripts à chaque requête. À partir de la version 5.5 de PHP, le langage dispose d'un cache d'opcode natif (appelé OpCache) rendant obsolète le module APC.
Ligne 1 158 ⟶ 607 :
{{Références nombreuses|taille=24| références=
 
<ref name="php80">{{lien web|url=https://wiki.php.net/todo/php80|titre=PHP: todo:php80|websitesite=wiki.php.net|consulté le=2020-06-16}}.</ref>
 
}}
Ligne 1 178 ⟶ 627 :
* [[Paamayim Nekudotayim]] : nom de l'opérateur <code>::</code> en PHP
* [[Liste de frameworks PHP]] : liste des cadres de développement (Frameworks) en PHP
* [[Suhosin]]: module de durcissement de PHP5
* [[W3Schools]] : site d'apprentissage de divers [[Langage de programmation|langages de programmation]] dont PHP.
 
=== Liens externes ===