Récapitulatif PHP 11 Ce chapitre présente la syntaxe du langage PHP. Il est destiné à servir de référence, et non de tutoriel permettant d’apprendre le langage. Les exemples de code PHP ne manquent pas dans les chapitres qui précèdent, aussi nous restons assez concis dans ceux qui sont présentés ici. PHP s’appuie sur toutes les structures et concepts d’un langage de programmation de haut niveau, ainsi – à partir de la version 5 – que sur les principales structures de la programmation orientée-objet. Il présente cependant la particularité d’avoir été conçu spécifiquement pour être intégré avec HTML. L’intérêt de PHP réside également dans le très vaste ensemble de fonctions qui accompagnent le langage et fournissent une nombre impressionnant de fonctionna- lités prêtes à l’emploi. L’annexe C donne une sélection de ces fonctions. 11.1 GÉNÉRALITÉS Tout code PHP doit être inclus dans une balise <?php ?>. Des balises « courtes » <?> sont acceptées dans certaines configurations, mais elles ne sont pas recommandées. Comme en C, le séparateur d’instructions est le point-virgule « ; ». Noter qu’une instruction « vide », marquée par un point-virgule est acceptée. La syntaxe suivante est donc correcte, bien que le second « ; » ne serve à rien. echo "Ceci est une instruction"; ; 420 Chapitre 11. Récapitulatif PHP 11.1.1 Commentaires Il existe trois manières d’inclure des commentaires au sein du code PHP : 1. comme en C, entre les signes « /* » et « */ » ; 2. comme en C++, en commençant une ligne par « // » : 3. comme en shell Unix, avec « # ». Les commentaires C++ ou Unix s’appliquent uniquement au texte qui suit sur la même ligne. La première méthode est donc la plus économique puisqu’on peut placer un texte de longueur arbitraire entre les deux symboles délimiteurs. Attention cependant à ne pas imbriquer des commentaires ! La deuxième ligne dans l’exemple ci-dessous fait partie du commentaire. /* Je veux mettre un commentaire /* Je crois commencer un deuxi`eme commentaire ! */ Je crois fermer le deuxi`eme */ Je crois fermer le premier, mais PHP ne comprend plus rien. On peut mixer les styles de commentaires dans un même script. 11.1.2 Variables et littéraux Les variables sont des symboles qui de référencent des valeurs. Comme leur nom l’in- dique, les variables peuvent référencer des valeurs différentes au cours de l’exécution d’un script, ce qui les distingue des littéraux ( ’0’, ’1.233’, ’Ceci est une chaîne’) qui représentent directement une valeur immuable. REMARQUE – PHP distingue les majuscules et minuscules dans le nom des variables : $mavariable et $maVariable désignent donc deux variables différentes. En revanche, les noms de fonctions sont insensibles à la casse. Un nom de variable commence toujours par un ’$’, suivi d’au moins un carac- tère non-numérique (le ’_’ est autorisé), puis de n’importe quelle combinaison de chiffres et de caractères. Il est recommandé de se fixer une norme pour nommer les variables, et d’utiliser pour chacune un nom qui soit explicite de l’utilisation de cette variable. Types Le type de la valeur associée à une variable peut lui-même changer, contrairement à des langages typés comme le C. Au cours de la vie d’un script, une variable peut donc référencer un entier, puis une chaîne, puis un objet. L’interpréteur se charge de gérer l’espace mémoire nécessaire pour stocker la valeur référencée par une variable, ce qui représente un très grand confort d’utilisation par rapport au C qui doit explicitement allouer et désallouer la mémoire. 11.1 Généralités 421 Déclaration Il n’y a pas de déclaration de variable en PHP ! L’interpréteur crée automatiquement une variable dès qu’un nouveau symbole préfixé par ’$’ apparaît dans un script. L’ins- truction ci-dessous affecte la valeur 1 à la variable $maVariable, si elle n’existait pas avant. $maVariable = 1; Que se passe-t-il quand on utilise la valeur d’une variable qui n’a pas encore été définie ? Et bien PHP rencontre un nouveau symbole préfixé par ’$’ et instancie donc une nouvelle variable avec comme valeur initiale la chaîne vide ou 0, selon le contexte. Le code suivant, où on a fait une faute de frappe dans le nom de la variable, affichera ainsi un blanc. echo "$maVaraible"; PHP passe silencieusement sur ce genre d’erreur, sauf si on a défini un niveau d’erreur suffisamment restrictif (voir page 222). Il est fortement recommandé, au moins en phase de développement, d’adopter un niveau E_ALL pour détecter ce genre d’anomalies. La fonction isSet() est également très utile pour savoir si une variable a été déjà définie ou non. Variable de variable Le nom d’une variable peut lui-même être une variable. Le code ci-dessous affecte la valeur 10 à la variable $mavar, dont le nom est lui-même la valeur de la variable $v1. Cette construction assez exotique a une utilité douteuse. $v1 = "mavar"; $$v1 = 10; 11.1.3 Constantes Une constante est un symbole associé à une valeur mais, à la différence des variables, ce symbole ne peut jamais être modifié. Une constante peut être vue comme un littéral désigné de manière symbolique, ce qui est préférable pour la clarté du code et son évolutivité. Les constantes sont définies par la commande define. define("PI", 3.14116); define ("MON_SERVEUR", "www.lamsade.dauphine.fr"); Par convention (mais ce n’est pas obligatoire) les constantes sont en majuscules. Une bonne pratique est de ne jamais utiliser de valeur « en dur » dans un script, mais de définir une constante. Deux avantages : 1. le code est plus lisible ; 2. si on veut changer la valeur, on peut le faire en un seul endroit. 422 Chapitre 11. Récapitulatif PHP 11.2 TYPES PHP distingue les types scalaires (entiers, flottants, chaînes) et les types agrégats (tableaux et classes). Les valeurs de types scalaires ne peuvent pas se décomposer, contrairement à celles des types agrégats. 11.2.1 Types numériques et booléens Ils comprennent les entiers et les flottants, ces derniers ayant une partie décimale séparée de la partie entière par un « . ». $i = 1; // Entier en notation d´ecimale $i = 011; // Notation octale (9 en d´ecimal) $i = 0x11;// Notation hexad´ecimale (17 en d´ecimal) $f = 3.14116// Flottant $f = 0.3e-3// Notation exponentielle (soit 0,0003) PHP n’a pas de type booléen explicite. Comme en C, la valeur faux est le 0, la chaîne vide ou la chaîne "0", et toute autre valeur est vraie, y compris un nombre négatif par exemple. Les constantes TRUE et FALSE sont prédéfinies et peuvent être utilisées dans les structures de contrôle. 11.2.2 Chaînes de caractères Les chaînes de caractères peuvent êtres encadrées par des apostrophes simples (’) ou doubles ("). Les premières peuvent contenir des apostrophes doubles, et réciproque- ment. Les deux types de chaînes ne sont cependant pas équivalents. Apostrophes simples On ne peut y inclure ni variables, ni caractères d’échappement (comme ’\n’). En revanche les sauts de lignes sont acceptés. Si on veut inclure un (’) dans une telle chaîne, il faut le préfixer par ’\’. Exemple : ’C\’est une cha^ıne avec apostrophes simples et un saut de ligne.’ Apostrophes doubles Contrairement aux précédentes, ces chaînes peuvent inclure des noms de variables qui seront remplacées par leur valeur à l’exécution. Dans l’exemple ci-dessous, on obtiendra la phrase Le réalisateur de Vertigo est Hitchcock.Ce mécanisme est extrêmement utile dans un langage orienté vers la production de texte. $nom = "Hitchcock"; echo "Le r´ealisateur de Vertigo est $nom."; . langage PHP. Il est destiné à servir de référence, et non de tutoriel permettant d’apprendre le langage. Les exemples de code PHP ne manquent pas dans les chapitres qui précèdent, aussi nous restons. puis de n’importe quelle combinaison de chiffres et de caractères. Il est recommandé de se fixer une norme pour nommer les variables, et d’utiliser pour chacune un nom qui soit explicite de l’utilisation. majuscules et minuscules dans le nom des variables : $mavariable et $maVariable désignent donc deux variables différentes. En revanche, les noms de fonctions sont insensibles à la casse. Un nom de variable