PHP

Fiche logiciel validé
  • Création ou MAJ importante : 06/01/14
  • Correction mineure : 06/01/14
Mots-clés

PHP : langage informatique orienté programmation Web

Description
Fonctionnalités générales

Le langage PHP (PHP Hypertext Preprocessor, acronyme récursif) est un langage utilisé pour la programmation de sites Web, c'est le langage le plus répandu actuellement pour la réalisation des sites Web, une belle réussite pour un logiciel libre (cf. http://www.journaldunet.com/developpeur/algo-metho...).

PHP est un langage dit de "scripting" permettant de générer des pages HTML dynamiques, c'est-à-dire modifiables en fonction des interactions de l'utilisateur et des éventuelles données historiques associées à l'utilisateur et à la session courante.

Au niveau du langage informatique, il s'agit d'un langage interprété orienté objet avec une syntaxe apparentée à celle du langage "C" pour la partie procédurale.

Quelques caractéristiques :

  • typage automatique des variables
  • gestion automatique de la mémoire (allocations/libérations)
  • nom des variables préfixé par le caractère "$"
  • utilisation de tableaux indexés et de tableaux associatifs
  • sous-programmes et fonctions, récursivité
  • objets et classes d'objets (héritage unique)
  • bibliothèque très complète de fonctions

En raison de la richesse de ses bibliothèques, on désigne souvent PHP comme une plate-forme plus qu'un simple langage.

Bien que PHP soit un langage informatique complet, il est rarement utilisé en tant que langage algorithmique isolé, il est le plus souvent utilisé en scripting du côté des serveurs Web, et dans ce cas, en association avec un serveur HTTP (Hyper Text Transport Protocol).

Fonctionnement du couple HTTP-PHP :
1) Le client (navigateur) demande une page HTML au serveur HTTP.
2) Le serveur HTTP transmet la demande à son interpréteur PHP.
3) L'interpréteur PHP construit la page HTML réponse à partir d'une page PHP dynamique (correspondant à cette page HTML), des éventuelles données saisies par l'utilisateur (client), des données applicatives et des éventuelles données historiques concernant l'utilisateur ou la session courante.
4) L'interpréteur PHP transmet la page réponse HTML au serveur HTTP, lequel la retransmet au client.

Autres fonctionnalités

PHP permet comme les langages de la lignée shell-awk-perl de transformer n'importe quel texte source en n'importe quel texte cible (ou presque) :

  • Il est possible à partir du PHP de générer toutes les balises HTML (idem pour les feuilles de style CSS) et créer des pages dynamiques Web sans aucun code HTML, avec l'avantage de disposer d'un langage de programmation évolué (PHP) permettant l'utilisation de variables.

  • Il est possible à partir du PHP de générer des documents dans d'autres formats texte (texte brut, XML, CSV/TSV) ou binaire (graphiques avec les bibliothèques GD et jpGraph, fichiers pour tableurs, fichiers PDF, ...).

Interopérabilité

Le code source PHP est portable à l'identique sur toutes les plateformes supportant un interpréteur PHP (Unix, Windows, etc...).
Par contre, le langage PHP, enfant de l'Internet, évolue constamment avec ce dernier et des différences significatives existent entre les grandes versions (4, 5, 5.x) et obligent les programmeurs à maintenir régulièrement leurs développements en fonction des versions PHP mises en place par les hébergeurs.

Contexte d'utilisation dans mon laboratoire/service

Ce langage peut être utilisé de 3 façons :

1) En mode interpréteur de commandes (commandes en lignes ou fichiers de commandes), en fait le plus souvent pour cette utilisation on préfèrera utiliser le langage Perl.

2) En mode couplé avec un serveur Apache (ou autre serveur HTTP) pour la programmation Web, il vous faudra installer vous-même l'interface SAPI (Server Abstraction API) pour interconnecter PHP et Apache, c'est pourquoi nous vous conseillons plutôt la solution 3.

3) En utilisant un produit intégré qui fournit le couplage HTTP/PHP et propose d'autres fonctionnalités comme l'implémentation d'une base de données relationnelle. Ces produits intégrés portent des noms génériques du type "AMP", "LAMP" ou "XAMP" (AMP pour Apache/MySql/PHP et "X" pour Linux et "X" pour Unix).
Un système de type AMP est décrit dans la fiche ressource Xampp-serveur-web-complet et un complément AMP sera fourni par la suite sous la forme d'une fiche complémentaire.

Limitations, difficultés, fonctionnalités importantes non couvertes

Difficultés :

Difficultés classiques des développements Web, ne pas mélanger le PHP et le HTML, c'est-à-dire d'une part ne pas mélanger fonctionnellement les traitements et la présentation et d'autre part ne pas constamment imbriquer le code PHP et le code HTML, ce qui rend les programmes sources illisibles et donc difficilement maintenables.

Solutions :

  • Programmer de façon très claire et très structurée !
  • Utiliser des frameworks MVC : CakePHP, Symfony, ...
  • Utiliser des bibliothèques de "Templates" comme les logiciels libres "Smarty" ou "PhpLib".
  • Créer ses propres fonctions "Templates".
Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Tous les produits intégrés de type AMP (cf. la fiche ressource Xampp-serveur-web-complet).

Plates-formes

Windows
Linux
Mac OS

Logiciels connexes

Comme expliqué ci-dessus, le langage PHP est fortement lié au serveur HTTP. Il est également fortement lié aux langages HTML et CSS puisqu'il est surtout utilisé pour générer des pages HTML incluant les feuilles de style CSS.

La tendance aujourd'hui est d'utiliser une base de données relationnelle (souvent MySql) en dorsal par rapport au PHP pour gérer la persistance des données.

Un grand nombre d'outils Web, notamment des CMS (gestionnaires de contenus) sont aujourd'hui développés en PHP.

Autres logiciels aux fonctionnalités équivalentes
  • Servlets Java et pages JSP (Java Server Pages),
  • ASP.NET (Active Server Pages) de la plateforme DOTNET de Microsoft ,
  • Programmation PERL, PYTHON, RUBY avec utilisation de l'interface CGI (Common Gateway Interface) des serveurs HTTP.
  • Node.js : Programmation évènementielle JavaScript côté serveur.
Environnement de développement
Type de structure associée au développement

Editeur professionnel : créé par Rasmus Lerdorf en 1995 en tant que boîte à outils personnelle, PHP est repris et industrialisé en 1997 par Andi Gutmans et Zeev Suraski dans la cadre de la société Zend Technologies (Zend contraction de Zeev et Andi), spécialisée dans les technologies Open Source.

Eléments de pérennité

Plusieurs millions de sites web indiquent qu'ils sont configurés avec PHP, ce qui représente environ 20 % des noms de domaine sur Internet.

L'équipe de développement de PHP inclut des douzaines de développeurs et une équipe "Qualité" a été mise en place : http://qa.php.net/

Références d'utilisateurs institutionnels

Langage enseigné au Cnam dans le cadre du Certificat Professionnel Webmestre.
Langage utilisé par le contributeur de la présente fiche pour le développement d'une demi-douzaine de sites Web.
Langage utilisé sur le présent site PLUME ainsi que dans divers outils décrits dans PLUME.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur