PHP, un langage pour construire des pages Web sur le serveur

Le langage de programmation PHP

On est quelquefois partagé sur la façon d'optimiser le langage pour accélérer son fonctionnement, et Facebook a même opté pour une approche radicale en créant un compilateur et une machine virtuelle.
Mais ce langage est devenu universel coté serveur. PHP est le P dans l'architecture populaire LAMP qui inclut le système d'exploitation Linux, le serveur Apache et la base de données MySQL.

Un script PHP produit des pages HTML, et peut être imbriqué à l'intérieur de code HTML, comme JavaScript mais est interprété sur le serveur. L'interpréteur peut aussi fonctionner sur le poste local.

Le langage a été conçu en 1993 par Rasmus Lerdorf parce qu'il avait besoin lui-même d'un outil gratuit pour programmer des pages Web et le il distribue en source libre sous le nom PHP/FI, Personal Home Pages/Form Interpreter.

"Je n'avais jamais pensé en écrivant PHP qu'un jour des millions de personnes regarderaient mon code par dessus mon épaule. Si j'avais imaginé cela, j'aurais sûrement fait certaines choses différemment."
Rasmus Lerdorf, 2012.

Après avoir travaillé chez Yahoo!, Rasmus Lerdorf a été employé par WePay puis Etsy. Il développera ensuite PHP avec l'aide de plusieurs programmeurs qui écrivent un nouveau moteur pour PHP 3 et lui donnent le nom de PHP Hypertext Processor en 1997. Les acronymes récursifs sont à la mode, avec des noms tels que GNU is Not Unix, PNG is Not GIF, etc...
En 1999 le moteur Zend est créé pour PHP 4.
PHP 5 est apparu en 2004, il est orienté objets et supporte XML. La vitesse d'exécution a été doublée en passant de PHP 5.3 à PHP 5.6.
PHP 7 est apparu le 3 décembre 2015. Il n'y pas de PHP 6 après le projet avorté qui a vu une partie de ses apports transférés à PHP 5.

Description du langage

PHP reprend la syntaxe de C et des idées du shell d'Unix.

Syntaxe

Structures de contrôle

La structure if dispose des options elsif et else.

if(x < 10) {
   echo "$x inférieur à 10\n";
}
elseif(x > 10) {
   echo "$x supérieur à  10\n";
}
else { echo 'etc...\n' }
La structure while:
while(expr) {
    ... 
} 

Fonction ou méthode

La définition d'une fonction commence par le mot-clé function, suivi du nom et la liste des arguments séparé par des virgules, et le corps est enclos entre { et }.
Le mot-clé return dans le corps de la définition permet de retourner une valeur.

function nomfonc( arguments ) {
...instructions... return(x);
}

Classe

class nom {
    ...
}

Le corps est similaire au code global.

Chaîne de caractères

Exemple: afficher les lettres d'un texte.

$str = "demo";
$len = strlen($str);
for($i = 0; $i < $len; $i++) { 
     echo $str[$i];
} 

Tableau

Déclarer, fusionner, prendre un sous-ensemble, afficher les éléments.

$arr = array(1,2,3 );
$arr = array_merge($arr, array( 4,5));
$sub = array_slice(|$arr, 1,3);
foreach($sub $as $num) {
     echo $num;
} 

Doit afficher  234.

Serveur local intégré

Pour fonctionner localement, et notamment pour la mise au point du code, il faut installer un serveur et ensuite exécuter le script avec le préfixe http://localhost.

Depuis la version 5.4, cela devient superflu car un serveur local est inclut dans la distribution. On lance le serveur avec cette commande:

php -S localhost:1100

Où 1100 est le numéro du port (c'est un exemple). Pour lancer le script index.php, et afficher le résultat dans un navigateur, taper dans la barre d'URL:

localhost:1100 

L'avantage par rapport aux solutions comme Wamp est qu'il n'est pas nécessaire de transférer les fichiers dans un sous-répertoire de Wamp, le répertoire www en l'occurence. Les scripts et pages PHP fonctionnent là où ils se trouvent.

Pourquoi utiliser PHP? L'expérience utilisateur

PHP est un outil Internet fonctionnant sur le serveur pour exécuter des scripts, ou créer ou modifier des pages Web dans lesquels il est inclus.
Il convient pour traiter des données importantes coté serveur, et construire des pages HTML affichant les résultats (JavaScript convient pour modifier dynamiquement les pages coté navigateur).
PHP 5 est un concurrent à Java en plus simple, comme serveur d'application et constitue une plateforme pour les applications et services Web.
C'est le langage le plus utilisé pour réaliser des CMS, les systèmes de gestion de contenu.

Le langage a été développé au jour le jour, pour ajouter les fonctions dont on avait besoin, sans plan bien défini. En conséquence il manque de consistence, de règles bien définies, et on doit se référer constamment au manuel pour retrouver notamment les paramètres d'une fonction.
Par exemple la fonction substr_replace à pour arguments la chaîne de départ suivie de la partie à remplacer et la chaîne de remplacement, alors que la fonction str_replace a pour arguments la partie à remplacer et la chaîne de remplacement suivies de la chaîne de départ.
Le fait qu'un tableau soit aussi un dictionnaire, donc que les indices soit des clés, est une source de maux de têtes pour les programmeurs.

Il y a en fait de nombreuses alternatives, Python, Ruby, Node, Go, et plus récemment, Julia.

PHP 6 (en fait PHP 5.x)

Le projet PHP 6 qui devait utiliser le format d'encodage Unicode a été abandonné. Mais certaines fonctions prévues dans le projet sont ou seront incorporées dans PHP 5.

  1. Les espaces de noms.
  2. Générateurs et coroutines (PHP 5.5).
  3. XMLReader. Pour lire des fichiers XML en mode Sax progressif.
  4. XMLWriter.
  5. goto, la directive du langage Basic réapparaît.
  6. Fonctions lambda ou closures (sans nom).
  7. Extension filefinfo, pour le système de fichier.
  8. Phar. Permet de placer une application PHP dans un seul fichier exécutable, comme on le fait en Java avec les .jar.
  9. Intl. Internationalisation.
  10. Les opérateurs continue et break ne pourront fonctionner qu'avec des constantes ou sans paramètre.
  11. La fonction ereg() pour les expressions régulières sera supprimée. Il faudra la remplacer par preg_match() dont le format est différent mais plus généralement utilisé.
  12. La compatibilité avec d'anciens formats comme GD 1 et Freetype 1 sera supprimée.
  13. Magic_quotes, une propriété très décriée car source de failles de sécurité ne sera plus supporté.
  14. Il en est de même pour register_global, safe_mode et register_long_arrays.
    Il faudra donc modifier les applications présentes pour les rendre compatibles.
  15. Les balises <?php ?>, sont les seules reconnues.
  16. dl() pour charger une librairie dynamique est désactivé depuis 5.3.
  17. Array_column retourne une colone dans un tableau multi-dim.

Le support de Windows XP s'arrête avec la version 5.5.

En 2008, le CEO de Zend, déclarait ceci dans une interview:

Donc nous prévoyons une cycle de déploiement à long terme pour PHP 6 et nous ne voulons pas suivre le même chemin que le project Perl, avec des contributeur travaillant toujours sur Perl 6 six ans après. Les gens se moquent de Microsoft mais regardez Perl 6.

En 2015, PHP 6 n'existe toujours pas, et on a préféré passer directement à PHP 7. A vrai dire, Perl 6 n'est toujours pas achevé non plus!

PHP 7

Nommée auparavant PHP Next Generation (PHPNG), cette nouvelle version succède à PHP 5 (il n'y aura jamais de PHP 6), et veut d'une part accélérer les performances avec un interpréteur JIT comme le fait HHVM, d'autre part rendre la syntaxe plus consistance. Le gain en performance est de 100% en moyenne par rapport à 5.6.
La programmation asynchrone permet des traitements en parallèle.

Faut-il passer un site à PHP 7? Cela permet de meilleurs performances et une économie de mémoire, donc c'est certainement recommandé. Cependant, on doit s'assurer que qu'il n'y a aucune incompatibilité dans le mesure ou un ensemble de fonctions obsolètes mais toujours actives se trouve maintenant supprimé. Par exemple les fonctions mysql.

Optimiser PHP: Google vs. L'équipe de PHP

Les techniciens de Google donnent des conseils aux Webmasters pour optimiser le code des pages et des scripts. Un de ces articles concerne PHP et indique en plusieurs points comment modifier le code, remplacer des structures de contrôle, pour l'optimiser au mieux.
Mais du coté des créateurs du language, on s'insurge et on conteste cette analyse. Cette polémique est intéressante pour les webmasters qui utilisent le PHP sur leur site, car elle fournit des précisions utile sur l'optimisation du code.

Le seul point sur lequel les deux parties sont d'accord, c'est qu'il vaut mieux migrer vers la dernière version de PHP, car c'est toujours la plus rapide.

HHVM

HHVM (Hip Hop Virtual Machine) est un compilateur JIT créé et utilisé par Facebook, disponible sur GitHub avec le code source. Fonctionnant avec la machine virtuelle HHVM, PHP devient deux plus rapide qu'avec l'interpréteur de Zend. HHVM a remplacé PHP 5.3 chez Wikipedia aussi (ils se préparent à migrer vers PHP 7 maintenant).
Les comparaisons avec PHP 7 ont montré que HHVM est légèrement plus rapide pour le code antérieur, mais quand le code tire parti des nouveautés du langage, c'est l'interpréteur PHP 7 qui l'emporte.

Pour une analyse de son fonctionnement, un article détaillé: LLVM code generation in HHVM. LLVM est maintenant le backend final dans une chaîne de représentations intermédiaires.

De PHP à LLVM avec HHVM

PHP est compilé en bytecode HHVM, puis dans une seconde représentation intermédiaire. Il est ensuite traduit en langage d'assemblage qui peut être converti en bitcode LLVM.

La machine virtuelle fonctionne avec le langage Hack qui s'est substitué à PHP et est devenu incompatible avec lui en 2018. Il peut être remplacé par PHP 7 sans perte de performance.

Outils et tutoriels

Editeurs et IDE gratuits

La plupart des éditeurs de codes disposent de coloration syntaxique et auto-correction pour PHP, Visual Studio Code par example. Certains IDE proposent des outils supplémentaires.

Aides au développement

Scripts et tutoriels

Voir aussi: Les frameworks PHP.

Forum

Quel est le meilleur éditeur PHP?

26-01-2009 19:04:41

Fodart

Il existe une quantité d'éditeurs pour PHP, mais je voudrais savoir si quelqu'un connaît un éditeur PHP avec auto-complétion et tout ce que l'on trouve sur les éditeurs modernes... Je travaille sous Windows, mais quelquefois aussi sous Linux.
28-01-2009 14:47:48

webmaster

Sun a décidé d'étendre son IDE NetBeans à d'autres langages que Java, et notamment PHP, JavaScript et C++. Ce qui fait que l'on dispose avec ce logiciel, gratuit précisons-le, d'un éditeur très complet, intégrant même un serveur au choix pour tester les scripts PHP hors ligne! C'est probablement le plus complet. Il fonctionne sous Windows et Linux.