Qu’est-ce que PHP ? Tutoriel pour les débutants
PHP est un langage de programmation open-source interprété côté serveur, essentiellement utilisé pour la création de pages Web dynamiques. L'abréviation initiale signifiait « Personal Home Page Tools », mais elle est maintenant utilisée comme acronyme pour « PHP: Hypertext Preprocessor ».
Si les langages côté client tels que HTML, CSS ou JavaScript ne sont interprétés par le navigateur Web que lorsqu'une page Web est ouverte, le code PHP est déjà exécuté sur le serveur Web. Les scripts PHP génèrent alors une sortie HTML, qui est envoyée au navigateur Web. Celui-ci n'obtient pas le code réel (le script PHP) mais seulement le résultat de l'exécution du script.
Le principal champ d'application de PHP est la programmation côté serveur, en particulier les sites Web et les applications dynamiques. Il est également bien adapté à la création d'applications bureautiques et à la programmation en ligne de commande. Bien qu’il soit adapté aux débutants, PHP offre une gamme impressionnante de fonctionnalités. Le langage de programmation se caractérise par un vaste support de base de données ; il peut être utilisé sur plusieurs plateformes, et il est disponible sous une licence PHP spécifique, ce qui permet d’utiliser et de modifier le code source. Tous ces éléments en font un outil convaincant.
WordPress, TYPO3, Joomla et Drupal, quatre des systèmes de gestion de contenu les plus populaires, sont basés sur PHP. Selon une analyse de marché de W3Techs, le langage de programmation est actuellement utilisé sur 82,3% de toutes les pages du Web (à partir du 18 novembre 2016). Ceci fait de PHP le langage de programmation côté serveur le plus populaire pour le développement Web. Hypertext Preprocessor constitue à lui seul une raison suffisante pour se familiariser avec les possibilités de PHP.
Ce tutoriel PHP s'adresse principalement aux débutants et offre un aperçu de la programmation côté serveur. Néanmoins, certains exemples nécessitent de disposer de certaines bases en développement Web. Par ailleurs, il est important de se familiariser au préalable avec le langage de balisage HTML.
La façon la plus rapide d'apprendre PHP est de comprendre les exemples listés ici et de les adapter aux besoins de votre projet Web. Tout ce dont vous avez besoin pour la programmation côté serveur avec PHP, c'est d'un serveur Web incluant un interprète PHP, un éditeur de texte (par exemple Notepad+++ ou Vim et votre navigateur Web. Pour le serveur, il est recommandé d’utiliser l'environnement de test local XAMPP, qui est fourni gratuitement par Apache Friends pour les systèmes d'exploitation Windows, Linux et MacOS.
Avec l'hébergement PHP de IONOS, vous bénéficiez des meilleures fonctionnalités de la dernière version de PHP. Et si vous avez des questions, votre conseiller personnel est toujours à vos côtés.
Installer PHP
Pour gérer les scripts PHP, il est nécessaire de disposer d’un serveur Web en mesure d’interpréter le langage de programmation, et complété par un interpréteur PHP. Il s'agit d'un composant logiciel capable de déchiffrer les passages d'un fichier contenant du code PHP. En principe, PHP est compatible avec les principaux serveurs Web. L'interpréteur est inclus dans le pack de téléchargement PHP. La version actuelle est disponible en téléchargement gratuit sur le site officiel du projet php.net.
En règle générale, l'interpréteur PHP est intégré en tant que module de serveur ou FastCGI. Il n’est pas recommandé d’utiliser l'interpréteur en tant que programme CGI car les performances ne sont pas optimales. Dans la pratique, PHP est souvent utilisé pour la configuration en combinaison avec le serveur HTTP Apache. Si cette connexion est complétée par l'un des systèmes de bases de données MySQL ou MariaDB (pour Linux), on parle de système d'exploitation LAMP, WAMP (Windows) ou, pour macOS, MAMP.
Web Stacks : les piles de logiciels sont proposées sous forme de packs logiciels préconfigurés. Pour apprendre PHP, il est recommandé d’utiliser le package complet XAMPP, qui comprend une installation locale du serveur Web Apache incluant le système de base de données MariaDB, ainsi que les langages de programmation Perl et PHP. Vous trouverez les instructions détaillées nécessaires à l’installation dans notre tutoriel XAMPP.
XAMPP est purement un serveur de test. Le pack logiciel permet aux développeurs Web de mettre en place très rapidement un environnement de test complet pour les scripts, les pages HTML et les feuilles de style. Un fonctionnement sécurisé sur Internet en tant que serveur Web n'est pas garanti pour autant. XAMPP ne doit donc être utilisé que localement, et les services XAMPP ne doivent pas être accessibles à partir d'Internet.
Bases de PHP : la syntaxe du langage de programmation
Si vous avez configuré votre serveur Web local (par exemple en utilisant XAMPP), il est nécessaire de vérifier si PHP a été installé correctement et est prêt à exécuter des scripts.
en général, un script est un petit programme informatique non précompilé en code binaire. Les scripts sont écrits dans un langage de programmation tel que PHP, Perl ou JavaScript. En fonction de leur type, ils sont exécutés sur le serveur Web par un interpréteur (côté serveur) ou par un moteur dans le navigateur Web (côté client).
Ouvrez votre éditeur de texte préféré et copiez le script PHP ci-dessous :
<?php
phpinfo();
?>
Les scripts PHP présentent toujours une structure au schéma identique. La balise PHP d'ouverture <? php indique qu'un environnement script est en cours de démarrage. Elle est suivie du code PHP, présenté sous forme d'instructions. Dans l'exemple ci-dessous, c’est à la fonction phpinfo () qu’il est fait référence. La plupart des fonctions nécessitent un ou plusieurs paramètres entre parenthèses ; dans phpinfo(), ces paramètres sont optionnels : phpinfo (INFO_ALL). Chaque énoncé se termine par un point-virgule (;). Enfin, pour fermer l'environnement script, on utilise la balise PHP de fermeture suivante : ?>.
les fonctions sont des sous-catégories permettant de supprimer des parties du code du programme. Pour éviter la redondance, les tâches récurrentes peuvent être définies en tant que fonction unique, puis renommées à l'aide d'un nom de fonction. Les développeurs Web utilisent des fonctions PHP prédéfinies ou créent leurs propres sous-programmes.
Sauvegardez le fichier texte en le renommant test au format .php (script PHP), puis démarrez votre serveur Web. Si vous utilisez l'environnement de test XAMPP, placez test.php dans le répertoire XAMPP à l’emplacement htdocs (C:\xampp\htdocs).
Le fichier d’exemple est ensuite accessible avec cette URL suivante dans le navigateur Web : http://localhost/test.php. Pour les utilisateurs disposant d’un serveur Web différent ou d’une configuration personnalisée du logiciel XAMPP, il faut sélectionner l'URL en fonction du chemin de fichier correspondant.
http://localhost/test.php
si le slash (/) est utilisé comme séparateur de répertoire pour les adresses Internet dans la plupart des navigateurs, Windows Explorer utilise le backslash (\). Les navigateurs Web modernes réécrivent habituellement une barre oblique inversée dans la barre de navigation automatiquement en barre oblique.
Taper l'URL "http://localhost/test.php" revient à demander à son navigateur Web de fournir le fichier test.php au serveur Web. Le serveur Apache HTTP Server, ou le logiciel de serveur Web de votre choix, récupère le fichier dans le répertoire approprié. L'extension .php indique que le fichier contient du code PHP. L'interpréteur PHP intégré au serveur Web est désormais activé. Il analyse le document à partir de la balise PHP d'ouverture <?php, qui signale le début du code PHP. L'interpréteur est capable d'exécuter le code PHP et de générer une sortie HTML, fournie par le serveur Web au navigateur.
Si PHP est correctement installé, la page Web devrait s’afficher ainsi comme résultat de l'exécution du script :
La fonction phpinfo () est l'abréviation de la valeur par défaut phpinfo (INFO_ALL), qui affiche des informations détaillées sur la configuration PHP de votre serveur web. Si aucune version de PHP ne peut être trouvée, le navigateur Web affiche un message d'erreur ou transmet le code PHP au navigateur sans l'interpréter.
Hello World! ou comment éditer du texte grâce à la fonction echo de PHP
Si PHP a été correctement installé, vous pouvez écrire le premier script personnalisé en utilisant la fonction echo. Contrairement à phpinfo (), echo n'est pas une fonction au sens propre. Il s'agit plutôt d'une construction de langage qui permet de générer une chaîne de caractères subséquente sous forme de texte.
les constructions de langage sont des instructions utilisées en PHP, qui servent à contrôler le déroulement du programme. Les constructions de langage incluent des instructions echo comme if, for, do, include, return, exit ou die. C’est pourquoi, contrairement aux fonctions, il n'est pas nécessaire d'utiliser des crochets lorsque l’on fait appel à des mots-clés.
Pour commencer un nouveau script, ouvrez un nouveau document PHP et inscrivez la ligne de code suivante :
<?php
echo 'Hello World!';
?>
Le tag ouvert <?php débute l’environnement de script. Il est suivi par la construction de langage echo, par la chaîne de code Hello World! entre guillemets, et par la commande ?> qui ferme le script. Soyez vigilant au point-virgule après l'instruction. Il est évidemment possible d’utiliser n'importe quel texte à la place de Hello World!.
en informatique, une chaîne est une suite de caractères de longueur variable, composée de lettres, de chiffres et de caractères spéciaux. En programmation, les chaînes de caractères sont considérées comme des types de données indépendants et sont délimitées pour se différencier de données d’autres natures telles que les integers (entiers) ou les floats (nombre à virgule flottante).
Ensuite, enregistrez le script sous le nom hello.php dans le dossier htdocs sur votre serveur Web, puis ouvrez le fichier via l'URL "http://localhost/hello.php " dans le navigateur. Si le code a été correctement transféré, la fenêtre du navigateur doit maintenant afficher la chaîne de caractères que vous utilisez :
Chaque texte édité grâce à echo peut ensuite être taggé avec des balises HTML si nécessaire. Ces balises sont ensuite interprétées par le navigateur selon la spécification HTML. On peut s’en convaincre soi-même avec l’exemple de script suivant :
<?php
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
Grâce à la balise <h1>, la chaîne Hello World! est interprétée par le navigateur Web comme un titre de premier niveau. Il est suivi d'un saut de ligne automatique et du paragraphe de texte <p>.
Echo peut, en fonction des besoins, être utilisé avec des guillemets simples (') et doubles ("). Lorsque l’on souhaite seulement éditer du texte, le choix des guillemets n’est pas important. Il le devient en revanche lorsque les variables entrent en jeu.
Les variables
La construction de langage echo offre plus qu'une simple ligne de texte qui, finalement, pourrait être mise en œuvre sans PHP, sur la base de HTML. La réelle valeur ajoutée d’echo repose sur les variables, des éléments permettant à l'instruction de créer des textes dynamiques.
Les utilisateurs de PHP rencontrent des variables dans le formulaire suivant, par exemple :
$example
Chaque variable se compose d'un signe dollar ($), suivi du nom de la variable. On utilise les variables dans les scripts PHP pour intégrer des données externes dans les pages Web. Il peut s'agir de valeurs de différents types, des simples nombres et chaînes de caractères à des textes entiers à des structures de document HTML.
Au sein de PHP, il existe plusieurs types de variables :
Type de variable | Description |
---|---|
String | String, qui signifie corde, correspond à une chaîne de caractères. Il peut s’agir d’un mot, une phrase, un texte ou le code HTML complet d'une page Web. |
Integer | Un integer est un entier sans décimales. Il peut être positif ou négatif. |
Float | Un float est un nombre à virgule flottante, c'est-à-dire une valeur numérique avec décimales. En langage de programmation, la virgule est représentée sous la forme d’un point (.). PHP supporte jusqu'à 14 décimales. |
Boolean | Les variables boolean sont le résultat d'une opération logique et ne peuvent avoir que deux valeurs : TRUE (vrai) et FALSE (faux). On a recours à ce type de variable par exemple lorsque l’on utilise des conditions. |
Array | Un array est une variable pouvant contenir plusieurs éléments : il s’agit d'un regroupement de plusieurs données de structure similaire, rassemblées pour former un tableau. |
Object | La variable object permet aux programmeurs de définir leurs propres types de données. Elle est utilisée pour la programmation orientée objet. Dans la mesure où il s’agit de fonctions avancées, elles ne sont pas abordées dans ce tutoriel PHP pour débutants. |
NULL | NULL indique une variable ne représentant aucune valeur. |
En général, le contenu est géré de façon centralisée, à l'aide de systèmes de bases de données. Il est également possible de définir les valeurs des variables directement dans le script. Ce type d'affectation repose selon le schéma suivant :
$exemple = "Valeur";
Le symbole dollar caractéristique est suivi du nom de la variable (dans ce cas, exemple), et connecté par le signe égal (=) à une valeur encadrée de doubles guillemets.
les valeurs des variables de type Integer et Float sont inscrites sans guillemets, de la façon suivante : $exemple = 24; ou $exemple = 2.7;
PHP offre une grande liberté en ce qui concerne le nom des variables, que vous pouvez nommer à votre guise tant que les contraintes suivantes sont respectées :
- Chaque variable doit commencer par le symbole dollar.
- Un nom de variable est une chaîne composée de lettres, de chiffres et de tirets, du type : $exemple_1.
- Un nom de variable valide commence toujours par une lettre ou un tiret, comme suit : $exemple1 ou $_exemple, mais jamais par un chiffre (faux : $1exemple).
- PHP est sensible à la casse : le langage de script fait une distinction entre majuscules et minuscules. $exemple est donc différent de $Exemple.
- Le nom de la variable ne doit contenir ni espaces ni sauts de ligne (faux : $exemple 1)
- Les chaînes de caractères que PHP réserve à d'autres fins ne peuvent pas être personnalisées (par exemple $this).
Voici un exemple :
<?php
$author = "John Doe";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>";
?>
La balise d'ouverture PHP est suivie de la définition de la variable : on utilise valeur John Doe pour $author. Pendant l'exécution du script, la variable $author est remplacée par la valeur John Doe à chaque fois qu'elle est spécifiée dans l'environnement. L’image ci-dessous illustre la manière dont ceci est présenté dans le navigateur.
Ceci est particulièrement efficace si une variable intervient plus d'une fois dans un script. Dans ce cas, une seule modification suffit pour en corriger toutes les occurrences, puisque c'est ici que la valeur de la variable est définie.
C’est là que réside la puissance de PHP : le contenu peut être intégré sous forme de variables. Cette fonctionnalité constitue la base du développement Web dynamique. À l’inverse des pages statiques, disponibles sous forme de pages HTML prêtes à l'emploi, les pages Web dynamiques ne sont créées que lorsque l’utilisateur cherche à les afficher. L'interpréteur PHP utilise les variables pour charger les éléments individuels de la page Web à laquelle on souhaite accéder : pour ce faire, il a recours à différentes bases de données dont il assemble les éléments dans une page HTML adaptée à une requête spécifique.
Les avantages de ce concept de design sont évidents : lorsque des éléments du site Web (par exemple dans la zone de pied de page) sont modifiés, il n’est pas nécessaire de procéder à des ajustements manuels sur chaque sous-page du projet Web. Il suffit au contraire de mettre à jour l'entrée en question dans la base de données. De cette façon, la révision est automatiquement adoptée pour toutes les pages Web qui incluent les données correspondantes en tant que variables.
Si une variable est définie plusieurs fois dans un script, chaque nouvelle définition remplace la précédente. Echo met toujours en œuvre la valeur actuelle d'une variable.
<?php
$author = "John Doe";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>";
$author = "Max Mustermann";
echo " <p>Supported by $author.</p>";
?>
Dans l’exemple de code, la variable $author reçoit d’abord la valeur John Doe, qui est ensuite remplacée par Max Mustermann.
En ce qui concerne les guillemets, les règles sont différentes. En effet, à l’inverse des chaînes de caractères, les variables individuelles n'ont pas besoin d'être citées entre guillemets :
<?php
$author = "John Doe";
echo $author;
?>
Ceci n’est pas valable si la variable est utilisée dans une chaîne de caractères. Dans ce cas, il convient d’utiliser les doubles guillemets ("). Ceux-ci permettent d’indiquer à l'interpréteur PHP qu'il doit chercher dans la chaîne de caractères des variables pouvant être remplacées par les valeurs associées. Les chaînes de caractères entre guillemets simples (') sont interprétées et affichées comme des informations en texte clair, bien qu’il s’agisse de variables. En voici un exemple :
<?php
$author = "John Doe";
echo '<h1>Hello World!</h1>
<p>This dynamic web page was created by $author.</p>';
?>
Si l’on oublie complètement les guillemets, PHP signale une erreur de syntaxe.
Messages d'erreur et masquage
En cas d’erreurs syntaxiques, le code PHP n’est pas valide et l'interpréteur PHP émet un message d'erreur. Par exemple, ceci se produit si l’on utilise l'instruction echo avec une chaîne de caractères sans guillemets :
<?php
echo Hello World!;
?>
L'exemple indique une erreur à la ligne 2 du code du programme, soit exactement là où les guillemets ont été oubliés.
Des erreurs de syntaxe se produisent également lorsque l’on édite des caractères sous forme de texte qui sont associés à une tâche particulière en PHP, les guillemets notamment ('). En PHP, les caractères de ce type ne peuvent être édités de la même manière qu’un texte seulement si l’on informe l'interpréteur que le caractère en question n’est plus contraint d’assumer sa tâche réelle. Dans le cas de guillemets simples, il existe deux options : il est possible de placer une chaîne de caractères avec des guillemets simples entre guillemets doubles, ou de masquer les guillemets avec un backslash (\), comme suit :
<?php
echo '\'Hello World!\' ';
?>
Il est même possible de combiner des guillemets simples et doubles :
<?php
echo " 'Hello World!' ";
?>
Mais pas de la façon suivante :
<?php
echo ' 'Hello World!' ';
?>
Pour plus de lisibilité des exemples, des espaces ont été insérés entre les guillemets, mais il ne faut pas en ajouter dans la pratique.
Les opérateurs de concaténation
Lorsque l’on souhaite éditer simultanément plusieurs variables dans un script PHP, il est possible de procéder de la façon suivante, expliquée précédemment :
<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo "<h1>Hello World!</h1>
<p>This dynamic web page was created by $author1 and $author2.</p>";
?>
Il suffit d’écrire les deux variables entre guillemets avec le reste du texte à éditer dans la chaîne de caractères. PHP détecte automatiquement les variables en fonction du signe dollar ($), et insère les valeurs correspondantes.
Cependant, cette méthode est mal vue par la plupart des programmeurs, car le principe le plus répandu veut que les variables ne fassent pas partie de la chaîne. Ceci s’explique notamment par le fait que cette séparation est prescrite dans de nombreux langages de programmation. En outre, PHP exige également la séparation de la chaîne et de la variable lorsque l’on travaille avec des appels de fonction ou des variables plus complexes. Il est donc conseillé d'appliquer systématiquement cette séparation, même dans le cas d'une sortie de texte simple, bien que ce ne soit pas absolument nécessaire.
Lorsque l’on travaille avec des variables, il est essentiel de gérer plusieurs éléments liés entre eux pour la production. En PHP, c’est le rôle de l'opérateur de concaténation (.).
Le code de l'exemple ci-dessus devrait ressembler à ceci quand il est programmé de façon « propre » :
<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo '<h1>Hello World!</h1>
<p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>';
?>
Il s'agit donc de trois chaînes de caractères et deux variables qui sont concaténés en une seule chaîne.
Chaîne 1 | Variable1 | Chaîne 2 | Variable2 | Chaîne 3 |
---|---|---|---|---|
'<h1>Hello World!</h1> <p>This dynamic web page was created by ' | $author1 | ' and ' | $author2 | '.</p>' |
Il est à noter qu'un opérateur de concaténation assemble des chaînes ou des variables sans espaces. Si un espace vide est nécessaire, il doit être écrit entre guillemets comme dans l'exemple.
Les programmeurs utilisent l'opérateur de concaténation non seulement pour connecter les chaînes et les variables lors de l’affichage du texte, mais également pour apporter des extensions aux variables. L'exemple suivant illustre cette fonctionnalité exemplaire :
<?php
$beispiel = 'Hallo ';
$beispiel .= 'Welt';
echo $beispiel;
?>
Pour étendre la valeur d’une variable, il convient de la redéfinir, mais également de redéfinir les opérateurs de concaténation (.) devant le signe égal. C'est l'abréviation courante pour $exemple = $exemple . 'World'.
PHP ajoute la nouvelle valeur à celle définie au préalable. Si l’on souhaite insérer un espace entre les deux valeurs, il suffit de le noter à la fin de la première chaîne, comme dans l'exemple.
Insérer du PHP en HTML
L'interpréteur PHP déchiffre uniquement le code compris entre les balises d'ouverture et de fermeture PHP:
<?php [Cette chaîne est interprétée par PHP] ?>
Toutes les autres sections du document sont ignorées par l'interpréteur et transmises au serveur Web telles quelles. Le code PHP peut ainsi être intégré dans des documents HTML à volonté, par exemple pour créer un modèle de système de gestion de contenu. Assurez-vous que les documents HTML contenant du code PHP sont enregistrés dans des fichiers PHP. Sinon, le document n'est pas prétraité par l'interpréteur PHP, mais livré directement au navigateur Web - ce qui ferait apparaître le code du programme sous forme de texte sur le site Web.
On peut donc imaginer l'interpréteur PHP comme un collègue du serveur Web un peu paresseux, qui ne travaille que lorsqu'on lui demande de le faire, par exemple en ouvrant une balise PHP.
Lorsque l’on souhaite combiner HTML et PHP, il convient d’écrire la page HTML selon la structure classique du document puis de l’enregistrer sous l'extension de fichier .php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My first PHP page</title>
</head>
<body>
<h1>Hello World</h1>
<p>What is the current time and date?</p>
</body>
</html>
Ajoutez ensuite un script PHP dans votre document HTML. Il s’agit de veiller à ce que l’intégralité du code du programme se trouve à l’intérieur des balises PHP.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My first PHP page</title>
</head>
<body>
<h1>Hello World</h1>
<p>What is the current time and date?</p>
<p>Your current time and date is:
<?php
echo date("d.m.Y H:i:s");
?>.</p>
</body>
</html>
Dans l’exemple, nous avons combiné la construction de langage echo avec la fonction date() pour afficher la date et l'heure actuelle sous forme de texte côté serveur. Le paramètre de la fonction spécifie le format souhaité sous la forme d'une chaîne de caractères :
d.m.Y H:i:s = jour.mois.annee heure:minute:seconde
Si un navigateur Web sollicite ce type de fichier, l'interpréteur PHP exécute d'abord le script, puis écrit l'heure actuelle sous forme de texte dans le document HTML. L’heure est ensuite transmise grâce au serveur Web et affichée dans le navigateur en tant que page Web.
La fonction commentaires de PHP
De même que le code HTML, PHP peut être commenté à volonté. Tant que cela est signalé dans la syntaxe, les commentaires dans le code source sont ignorés par l'interpréteur PHP. PHP propose trois alternatives différentes.
Si l’on souhaite identifier une ligne entière comme un commentaire, et l'exclure de l'interprétation, il faut utiliser le hashtag (#) ou deux slashs à la suite (//). Dans l'exemple de code suivant, on fait appel aux deux options :
<?php
#This is a single-line comment!
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
//This is also a single-line comment!
?>
L'éditeur de texte Notepad++ affiche les commentaires en vert. Les passages de texte identifiés comme des commentaires dans l'environnement de script n'arrivent pas dans le navigateur Web, à l’inverse des commentaires HTML, parce qu'ils sont ignorés par l'interpréteur PHP lors de l’exécution du script.
Il est également possible d’insérer des commentaires sur plusieurs lignes. Pour ce faire, il convient de marquer le début d'une section de commentaire par une barre oblique suivie d'un astérisque (/*), et la fin par un astérisque suivi d'une barre oblique (*/).
<?php
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>
Les programmeurs utilisent des commentaires pour structurer le code source de leurs scripts, pour laisser des notes lors d’une modification ultérieure, ou pour ajouter des informations internes, comme l'auteur ou la date.
Les commentaires sont optionnels, et doivent être utilisés avec parcimonie pour assurer une bonne lisibilité du code source.
Calculer avec les variables
Dans le cadre de ce tutoriel PHP, nous avons déjà présenté les variables. Nous leur avons, jusqu’à présent, surtout assigné des valeurs des chaînes de caractères. Nous allons maintenant traiter les variables représentant des nombres entiers (Integers) ou des nombres à virgule (floats).
Si les variables sont dotées de valeurs numériques, PHP offre la possibilité d'effectuer des calculs. Commençons par un simple ajout de deux nombres entiers :
<?php
$number1 = 237;
$number2 = 148;
$result = $number1 + $number2;
echo "result: " . $result;
?>
Tout d'abord, nous attribuons aux variables $number1 et $number2 les entiers 237 et 148, puis définissons une variable $result, qui correspond à la somme des variables $number1 et $number2. Pour ce faire, nous utilisons l'opérateur arithmétique + (Plus). Enfin, on utilise la construction de langage echo pour afficher le résultat d'ajout sous forme de texte. Notez qu’il n’est pas nécessaire d’utiliser des guillemets lorsque l’on attribue des valeurs numériques aux variables.
L'exemple de code suivant présente une sélection de calculs mathématiques qui peuvent être effectués avec PHP côté serveur. Les opérateurs utilisés correspondent essentiellement aux caractères mathématiques normalisés.
Opérateur arithmétique | Opération | Résultat |
---|---|---|
$number1 + $number2 | Addition | Somme de $number1 et $number2 |
$number1 - $number2 | Soustraction | Différence entre $number1 et $number2 |
$number1 * $number2 | Multiplication | Produit de $number1 et $number2 |
$number1 / $number2 | Division | Quotient de $number1 et $number2 |
$number1 ** $number2 | Puissance | Puissance de $number2 par $number1 |
<?php
$numbe1 = 10;
$number2 = 5;
$addition = $number1 + $number2; //Addition
$subtraction = $number1 - $number2; //Subtraction
$multiplication = $number1 * $number2; //Multiplication
$division = $number1 / $number2; //Division
$exponentiation = $number1 ** $number2; //Exponentiation
?>
<?php
echo "Result addition: " . $addition ."<br />";
echo " Result subtraction: " . $subtraction . "<br />";
echo "Result multiplication: " . $multiplication . "<br />";
echo "Result division: " . $division . "<br />";
echo "10 to the 5th power (10^5): " . $exponentiation . "<br />";
echo "Square root of 81: " . sqrt(81) . "<br />";
?>
Pour les calculs complexes, il est possible de combiner les différents opérateurs arithmétiques dans un même script :
<?php
$number1 = 10;
$number2 = 5;
$result = 2 * $number1 + 5 * $number2 - 3 * sqrt(81);
echo "Result: " . $result;
?>
L’interpréteur PHP détermine les valeurs des variables et les calcule ainsi :
2 * 10 + 5 * 5 - 3 * √81 = 20 + 25 – 27 = 18
La fonction sqrt() calcule la racine carrée entre parenthèses. C’est l'ordre traditionnel des opérateurs en mathématiques qui s'applique, soit un point avant le calcul de la ligne. L'instruction echo renvoie le résultat sous la forme d'une chaîne de caractères pour le navigateur Web.
En PHP, les termes entre parenthèses sont aussi évalués en premier. Voici maintenant un exemple avec des nombres à virgule flottante :
<?php
$number1 = 2.5;
$number2 = 3.7;
$result = 2 * ($number1 + 5) * ($number2 - 3) * sqrt(81);
echo "Result: " . $result;
?>
À l’instar de tous les langages de programmation courants, PHP permet aux opérateurs d'augmenter ou de diminuer les valeurs numériques de 1. On distingue l'opérateur pré-incrémentation, l'opérateur pré-décrémentation, l'opérateur post-incrémentation et l'opérateur post-décrémentation.
Opération | Opérateur | Résultat |
---|---|---|
Pré-incrémentation | ++$number | L'opérateur ++ incrémente la valeur de la variable $number. La valeur est augmentée de 1. Le résultat est restitué sous la forme d'une nouvelle valeur de $number |
Pré-décrémentation | --$ number | L'opérateur -- diminue la valeur de la variable $number. La valeur est réduite de 1. Le résultat est restitué sous la forme d'une nouvelle valeur de $number. |
Post-incrémentation | $ number ++ | La valeur actuelle de $number est d'abord restituée et ensuite augmentée de la valeur 1. |
Post-décrémentation | $ number -- | La valeur courante de $number est d'abord restituée et ensuite diminuée de la valeur 1. |
Voici maintenant des opérations de calcul avec des opérateurs de décrémentation en utilisant l'exemple de la pré-incrémentation. Le script suivant augmente la valeur de la variable $number de 1, enregistre la nouvelle valeur dans la variable $result, puis restitue sa valeur sous forme de chaîne :
<?php
$number = 0;
$result = ++$number;
echo "Result: " . $result;
?>
Pour calculer le pré-décrément de la variable $number, on utilise le même script, en remplaçant l'opérateur pré-incrémental (++) par l'opérateur pré-décrémental (--) :
<?php
$number = 0;
$result = --$number;
echo "Result: " . $result;
?>
On diminue la valeur 0 de la variable $number pour obtenir le résultat -1. La valeur avant et après l’inscription (pré ou post) s’affiche ainsi dans le script :
<?php
$x = 0;
echo '<p>Result: ' . ++$x;
echo '<br>x has the value ' . $x;
echo '<p>Result: ' . $x++;
echo '<br>x has the value ' . $x, '</p>';
?>
Les superglobals $_GET et $_POST
Vous connaissez maintenant les bases de PHP, vous savez comment gérer les variables, vous pouvez les concaténer et faire des calculs. Nous vous expliquons maintenant pourquoi les variables constituent un concept central dans la programmation de script.
L’une des fonctions importantes des langages de programmation réside dans la capacité d'évaluer la saisie de l'utilisateur et de transférer les valeurs vers un autre script. Pour ce faire, PHP s'appuie sur les superglobals $_GET et $_POST, des variables système prédéfinies. En tant que champs de données associés (arrays), $_GET et $_POST stockent un ensemble de variables sous forme de chaînes dans une variable.
Les arrays peuvent être visualisés comme une commode à plusieurs tiroirs, chacun d’entre eux permettant de stocker des données. Afin de savoir plus tard ce qui se trouve dans chacun des tiroirs, il est nécessaire de les étiqueter avec un nom de variable. Selon le type de tableau, il peut s’agir d’un index ou d’une clé (key). Lorsque que l’on attribue un index sous forme de nombre pour chaque tiroir dans des tableaux indexés, cela revient à étiqueter les tiroirs d'un array associatif avec une clé sous la forme d'une chaîne (string).
Les superglobals $_GET et $_POST contiennent une série de variables sous forme de clés permettant d'accéder aux valeurs associées à ces clés. Voici en détail comment cela fonctionne.
Transfert de données avec $_GET
Le superglobal $_GET représente un tableau de variables transmises à un script PHP grâce à une URL.
Si vous vous rendez de temps en temps sur des blogs, des boutiques en ligne ou des forums, vous avez peut-être remarqué que l’on y trouve des URL étranges. On utilise en général une structure qui obéit au schéma suivant :
"http://nomdhote/dossier/nomdefichier.php?nomdevariable=valeurdevariable"
Pour un blog, cela se traduit ainsi :
"http://www.exemple-blog.fr/index.php?id=1"
Ce type d’URL peut facilement être décomposé : sur un serveur Web avec le domaine exemple-blog.fr, il y a un fichier nommé index.php, qui sert à créer un site Web dynamique. Il contient en général du code HTML et PHP, ainsi que des références à des fichiers de template et des feuilles de style externes, soit tout ce dont on a besoin pour afficher un site Web. Il s'agit probablement d'une page Web dynamique, comme l’indique l’ajout après le point d'interrogation (?): id=1. Ceci s'appelle une chaîne de requête HTTP : elle contient une variable (id) et une valeur (1) associée à un signe égal (=). Les paramètres URL de ce type sont par exemple utilisés pour créer une page Web dynamique, charger du contenu à partir d'une base de données ou sélectionner un template approprié.
Les pages Web dynamiques permettent de séparer le contenu et la présentation. L'index.php contient toutes les informations sur la structure du site, mais doit être rempli avec du contenu. Les informations sont généralement stockées dans une base de données et peuvent être récupérées à l'aide des paramètres de la chaîne de requête HTTP. Dans notre exemple, l'URL d’index.php contient le paramètre id=1, qui spécifie quel contenu doit être lu depuis la base de données et chargé dans index.php. Un weblog correspond en général à l'ID d'un article particulier. De cette façon, il est possible de trouver une entrée spécifique dans un forum et un produit spécifique dans une boutique en ligne.
Si une URL contient plusieurs paramètres, ceux-ci sont reliés entre eux grâce à une éperluette (&).
"www.exemple-blog.fr/index.php?page=article&id=1"
Pour illustrer l'utilisation de $_GET avec un exemple de code, il n’est pas forcément nécessaire d’utiliser une base de données. Dans le script suivant, on utilise le superglobal $_GET pour lire les valeurs des variables firstname et lastname d'une chaîne de requête HTTP, et les écrire dans les variables PHP $variable1 et $variable2 :
<?php
$variable1 = $_GET['forename'];
$variable2 = $_GET['surname'];
echo "Hello " . $variable1 . " " . $variable2 . "!";
?>
Le script est généré grâce à l’URL suivante :
localhost/hello.php?firstname=John&lastname=Doe
Nous attribuons donc les paramètres firstname=John et lastname=Doe. Comme pour les autres exemples, les valeurs sont éditées grâce à la construction de langage echo.
Le transfert de données via $_GET rend automatiquement les données visibles dans la ligne d'adresse URL. Il est donc possible de savoir à tout moment quels sont les paramètres sont transférés. Ceci présente l'avantage de permettre de stocker les variables dans des hyperliens. De plus, les utilisateurs peuvent stocker des URL, y compris des chaînes de requêtes HTTP, en tant que signets dans le navigateur.
Cependant, le fait que les paramètres GET soient listés en texte clair dans l'URL rend cette méthode inutilisable pour le transfert de données sensibles, comme par exemple les formulaires en ligne. En outre, la quantité de données pouvant être transférée à l'aide de $_GET est limitée car les URL ont une longueur maximale.
Il est possible de contourner ces restrictions grâce à la méthode HTTP POST. On trouve ainsi les données transférées dans le superglobal $_POST.
Transfert de données via $_POST
Pendant que les données à transférer sont transmises en tant que paramètres URL avec la méthode GET, avec $_POST, les données sont transférées dans le corps d'une requête HTTP. Ceci permet aux développeurs de transférer de grandes quantités de données d'un script à l'autre.
L’une des applications centrales de la méthode HTTP POST réside dans le transfert des données de formulaire HTML. Pour mieux comprendre, voici l'exemple d'une inscription à une newsletter.
Créez un nouveau fichier PHP nommé page1.php et copiez le bloc de code suivant :
<form method="post" action="page2.php" >
Please send the newsletter to: <br />
Forename: <input type="text" name="forename" /><br />
Surname: <input type="text" name="surname" /><br />
Email address: <input type="text" name="email" /><br />
<input type="submit" value="Submit form" />
</form>
L'élément HTML <form> est utilisé pour créer des formulaires. Il contient deux attributs dans la balise de départ : méthode et action. On utilise l'attribut de méthode pour définir la méthode de transfert : dans ce cas, il s’agit de HTTP-POST. L'attribut action enregistre l'URL d'un script qui reçoit toutes les données saisies. L'exemple montre un formulaire HTML avec trois éléments de saisie (input type="text") et un bouton d'envoi (input type="submit"). Le fichier page2.php est défini comme le destinataire des données.
<?php
$forename = $_POST["forename"];
$surname = $_POST["surname"];
$email = $_POST["email"];
echo "Hello " . $forename . " " . $surname . ", <br />
You are registered with the following email address: " . $email . ".";
?>
Sauvegardez ensuite les deux fichiers PHP dans le dossier htdocs de votre serveur de test, puis ouvrez le navigateur avec l'URL suivante : "http://localhost/page1.php". Votre navigateur affiche maintenant l'interface Web interactive de votre formulaire HTML.
Entrez ensuite les informations d'identification et appuyez sur le bouton submit pour transférer les variables d'un script à l’autre. Une fois que vous aurez confirmé votre inscription sur page1.php, vous serez redirigé vers page2.php. La fenêtre du navigateur affiche le résultat de l'exécution du script en fonction des données transmises.
Les entrées d'utilisateurs collectées via les champs de saisie de page1.php sont récupérées par page2.php grâce au schéma suivant :
$_POST["Name of the input field"]
De cette façon, la ligne $first name = $_POST["firstname"] récupère l'entrée dans le prénom du champ de saisie et l'enregistre dans la variable $firstname. La variable $firstname peut ainsi être éditée comme une chaîne de caractères avec echo.
La construction if et les opérateurs comparatifs de PHP
Jusqu'à présent, nous avons défini des variables, les avons transférées d'un script à l'autre, et éditées sous forme de chaîne. Dans l'étape suivante, vous apprendrez à attribuer certaines conditions à l'exécution des fragments.
La construction du langage if construit vous permet d'écrire des scripts de sorte que les instructions ne prennent effet que lorsqu'une condition que vous avez déterminée au préalable est remplie ; ceci peut être, par exemple, la saisie d'un mot de passe correct.
En PHP, les conditions sont définies de la façon suivante :
<?php
if(expression)
{
statement;
}
?>
Ce code se lit comme suit : l'instruction n'est exécutée que si la condition est remplie dans l'expression. Une condition est toujours remplie lorsque la construction if affiche le résultat TRUE (vrai). Sinon, il est considéré comme FALSE (faux) et l'instruction est ignorée.
En règle générale, la construction if vérifie si la valeur d'une variable correspond à ce qui a été défini au préalable dans la condition. Cette structure de contrôle est en général mise en œuvre sur la base d'opérateurs comparatifs.
Les opérateurs comparatifs
Les opérateurs comparatifs sont utilisés lorsque l’on définit les conditions, afin de mettre deux arguments dans une relation logique, qui peuvent être interprétés selon le principe vrai (TRUE) ou faux (FALSE). Si l’on utilise des opérateurs comparatifs dans les structures de contrôle PHP, ceux-ci sont appliqués à deux variables dans l'expression d'une construction if :
if ($a == $b)
{
statement;
}
La structure se lit ainsi : si la variable $a est égale à $b, les instructions définies dans statement sont exécutées.
Les opérateurs comparatifs PHP sont basés sur le langage de programmation C et leur orthographe diffère des symboles mathématiques classiques. En voici un aperçu dans le tableau ci-dessous :
Opérateur comparatif | Description | Condition |
---|---|---|
== | Est égal | La condition est remplie lorsque $a et $b ont la même valeur. |
=== | Est identique | La condition est remplie lorsque $a et $b ont la même valeur et appartiennent au même type de données. Ceci peut être illustré par un exemple quand un entier (1) est comparé à une chaîne de caractères ("1") : |
1 == "1" //TRUE | ||
1 === "1" //FALSE | ||
Pour les conditions qui requièrent l'égalité des deux variables, il est recommandé de toujours utiliser l'opérateur de comparaison === (est identique). | ||
!= | Est différent | La condition est remplie lorsque $a et $b n’ont pas la même valeur. |
!== | Non identique | La condition est remplie lorsque $a et $b n’ont pas la même valeur et n’appartiennent pas au même type de données. |
< | Est plus petit que | La condition est remplie lorsque la valeur $a est plus petite que la valeur $b. |
> | Est plus grand que | La condition est remplie lorsque la valeur $a est plus grande que la valeur $b. |
<= | est plus petit ou identique | La condition est remplie lorsque la valeur $a est plus petite que la valeur $b ou que $a et $b ont la même valeur. |
>= | Est plus grand ou identique | La condition est remplie lorsque la valeur $a est plus grande que la valeur $b ou que $a et $b ont la même valeur. |
Le script suivant permet de clarifier cette structure de contrôle en comparant deux entiers. C’est l'opérateur de comparaison < (est plus petit) qui est utilisé :
<?php
$number1 = 10;
$number2 = 20;
if($number1 < $number2) {
echo "The condition is fulfilled";
}
On définit les variables $number1 et $number2, puis on leur attribue les valeurs 10 et 20. On établit ensuite la condition suivante : si $number1 est inférieur à $number2, la chaîne spécifiée dans l'instruction echo doit être affichée.
Le résultat de l'exécution du script contient la réponse : 10 est inférieur à 20 et la construction if renvoie le résultat TRUE. La condition est donc remplie (the condition is fulfilled).
Si vous voulez définir des instructions qui sont exécutées lorsqu'une condition n'est pas remplie, ajoutez la construction de langage else à la structure de pilotage if selon le schéma suivant :
<?php
if(Condition a)
{
Command b;
}
else
{
Command c
}
?>
Ce script permet également de vérifier si la condition a donné lieu à un résultat TRUE ou FALSE. Si la condition est valide (TRUE), l’instruction b est exécutée. Dans le cas contraire (FALSE), le programme passe outre l’instruction b et exécute à la place l’instruction c.
Complétons notre script avec la construction else, et remplaçons l’opérateur de comparaison < (est inférieur) par == (est égal) :
<?php
$number1 = 10;
$number2 = 20;
if($number1 == $number2)
{
echo "The condition is fulfilled";
}
else
{
echo "The condition is not fulfilled";
}
?>
Cette fois, la construction if donne le résultat FALSE. La valeur de la variable $number1 est différente de celle de $number2. La condition n’est pas remplie. Cela signifie que la condition n’est pas exécutée selon la construction if, mais définie par else.
si l'exécution d'un fragment de code dépend de l'égalité de deux valeurs, on utilise en PHP un double signe égal (==). Le signe égal simple (=) n’est utilisé que pour affecter des valeurs aux variables.
La négation des conditions se fait par un point d'exclamation (!) précédant l'expression.
<?php
$zahl1 = 10;
$zahl2 = 20;
if ($zahl1 == $zahl2)
{
echo "Die Zahlen sind gleich.";
}
if (!($zahl1 == $zahl2))
{
echo "Die Zahlen sind nicht gleich.";
}
?>
Cet exemple montre la condition $ number1 == $ number2 et son contraire, soit !($ number1 == $ number2) contre ($number1 != $ number2).
L’une des applications concrètes de if et else réside dans la requête de mot de passe basée sur un formulaire HTML. En voici un exemple avec nos fichiers PHP page1.php et page2.php.
Commencez par ouvrir page1.php et entrez-y la formule de code suivante :
<form action="page2.php" method="post">
Please enter your password: <input type="password" name="password" />
<input type="submit" value="Submit" />
</form>
La structure correspond au formulaire déjà créé. Mais cette fois, un seul champ de saisie suffit : la requête du mot de passe. Comme précédemment, l'entrée utilisateur est envoyée au script page2.php. Nous l'adaptons avec le code suivant afin que la saisie du mot de passe soit comparée à un mot de passe mémorisé :
<?php
$password = $_POST["password"];
if($password=="qwertz123")
{
echo "The password was correct";
}
else
{
echo "The password was incorrect";
}
?>
Le code se lit de cette manière : pour commencer, nous attribuons une valeur à la variable $password de la ligne 2, que nous obtenons à l'aide de la méthode HTTP POST. Nous définissons ensuite la structure de contrôle suivante : à ligne 3, la construction if doit vérifier si la valeur de la variable $password est conforme à la chaîne qwertz123. Si c'est le cas, on obtient la chaîne de caractères The password was correct. Si if donne le résultat FALSE, else intervient à la ligne 7 et affiche la chaîne de caractères The password was false.
Accédons maintenant au script page2.php grâce à l’URL "http://localhost/page1.php".
Le navigateur Web nous redirige automatiquement vers page2.php. En arrière-plan, la structure de contrôle if compare notre entrée avec le mot de passe stocké : elle affiche le résultat qwertz123 == qwertz123 is TRUE et la chaîne de caractères The password was correct.
Testez par vous-même ce qui se passe si vous tapez un mot de passe différent de celui mémorisé dans le champ de saisie.
Les opérateurs logiques
Les conditions que vous définissez à l'aide d'opérateurs de comparaison dans l'expression de la construction if peuvent être, si nécessaire, liées à d'autres conditions dans la même expression. PHP est basé sur les opérateurs logiques AND et OR.
Opérateurs logiques | ||||
---|---|---|---|---|
Connexion forte | Connexion faible | Description | ||
&& | AND | Les deux conditions qui sont liées à l’opérateur doivent être vraies (TRUE). | ||
OR | Il faut qu’au moins l’une des conditions liées à l’opérateur soit vraie (TRUE). |
Pour lier les conditions, PHP fournit aux opérateurs logiques des connexions fortes et faibles. Si vous n'utilisez qu'une seule des deux orthographes, vous ne remarquerez aucune différence dans la pratique. Si vous combinez les deux orthographes, vous constaterez que OR et || connectent plus étroitement que AND et OR. De plus, AND et && sont plus étroitement connectés que OR et ||. Ceci est comparable à la séquence de classement des opérateurs connue des opérateurs mathématiques (par exemple, un point avant le tiret : * connecte plus que +).
L’une des applications concrètes de cette fonctionnalité est la requête de mot de passe. En général, les informations d'identification comprennent un mot de passe secret et un nom d'utilisateur. La connexion n'est réussie que si les deux entrées correspondent aux données enregistrées dans le système.
Ouvrons à nouveau notre formulaire de requête de mot de passe page1.php et ajoutons un champ de saisie pour le nom d’utilisateur :
<form action="page2.php" method="post">
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" value="Submit" />
</form>
Dans l'étape suivante, nous devons également adapter la structure de contrôle de la construction if. Pour ce faire, nous utilisons l'opérateur logique AND afin de connecter la condition pour la requête du mot de passe à une condition pour la requête du nom d'utilisateur.
<?php
$username = $_POST["username"];
$password = $_POST["password"];
if($username=="John Doe" AND $password=="qwertz123")
{
echo "Welcome to the internal area " . $username . "!";
}
else
{
echo "Access denied";
}
?>
Notre script page2.php récupère maintenant les valeurs du nom d'utilisateur et du mot de passe, puis les enregistre dans les variables $username et $password. L'expression de la construction if contient désormais deux conditions reliées à l'opérateur logique AND. C’est seulement si ces deux conditions sont remplies ($username==John Doe et $passwort ==qwertz123), que if affiche le résultat TRUE.
Puisque l’on obtient username à partir du nom d'utilisateur du champ de saisie, il est possible de l'utiliser directement pour la sortie de texte via echo : Welcome to the internal area est suivi par la valeur de la variable $username. Si l'une des deux conditions n'est pas remplie, c’est le texte suivant qui s’affiche : Access denied.
Les opérateurs logiques peuvent être combinés à loisir. C’est la règle suivante qui s'applique : AND a une priorité d'opérateur supérieure à OR. De même que pour les équations mathématiques, il est également possible d’utiliser les parenthèses en PHP pour influencer le classement.
Implémenter une boucle (while, for)
Il est parfois nécessaire qu'un script passe plusieurs fois à travers une certaine section de code avant que le reste du code soit exécuté. Pour ce faire, les langages de programmation utilisent le concept de boucles. Il existe trois types de boucles :
- la boucle while
- la boucle do-while
- la boucle for
La boucle while
Il s’agit du type de boucle le plus simple proposé par PHP. La construction de base correspond au schéma suivant :
while (expression)
{
Loop step and other instructions
}
La boucle while commande à PHP d'exécuter les instructions enfant tant que la condition while est remplie. L'interpréteur PHP vérifie la condition au début de chaque passage de boucle. L'exécution du code subordonné ne s’interrompt que lorsque la condition while n'est plus remplie.
Ce principe peut être illustré par un simple script de calcul :
<?php
$number = 1;
while ($number <= 10) {
echo $number++ . "<br />";
}
?>
Dans la section « Calculer avec des variables », nous avons introduit le principe de l'incrément. Dans le script suivant, nous l'utilisons à nouveau, mais cette fois-ci avec un opérateur post-incrément pour augmenter de 1 la valeur de la variable entière $number à chaque passage de boucle après la sortie de texte via echo. Comme condition pour la boucle while, nous définissons : $number inférieur ou égal à 10, donc l'instruction echo est répétée jusqu'à ce que $number ait atteint une valeur supérieure à 10.
Le résultat de l'exécution du script est une chaîne qui produit la valeur de la variable $number pour chaque passage de boucle avant qu'elle ne soit incrémentée. Le script compte donc de 1 à 10 et met fin à l'exécution du code dès que la condition while n'est plus remplie.
La boucle do while
La structure de la boucle do while est similaire à celle de la boucle while. La seule différence est que la condition n'est pas vérifiée au début de chaque passage de boucle, mais uniquement à la fin. Le schéma de base d'une boucle do while correspond à l'exemple suivant :
do {
Loop steps and other instructions
}
while (condition)
Programmé comme une boucle do while, le script précédent ressemblerait à ceci :
<?php
$number = 1;
do {
echo $number++ . "<br />";
}
while ($number <= 10);
?>
Dans ce cas, le résultat reste le même. La particularité de la boucle do while est qu'elle est parcourue au moins une fois, même si la condition n'est pas remplie lors d’un passage de boucle.
La boucle for
Dans l’ensemble, une boucle for au sein d’un script PHP présente les mêmes fonctionnalités qu’une boucle while. Cependant, la valeur de départ, la condition et l'instruction sont écrites sur une seule ligne au lieu d’être réparties sur trois lignes ou plus. La structure de base de la boucle for correspond au schéma suivant :
for (Valeur de départ; conditions; étapes de la boucle)
>Conditions
L'exemple précédent pourrait donc être noté avec une boucle for comme suit :
<?php
for($number = 1; $number <= 10; $number++) {
echo $number . "<br /> ";
}
?>
Tout d'abord, la valeur 1 est définie pour la variable $number. PHP vérifie ensuite si la condition $number <=10 est remplie. Si c'est le cas, la boucle continue et les instructions situées sous la boucle sont exécutées (il s’agit ici de l'instruction echo). Vient ensuite l’exécution de l'étape de boucle ; dans ce cas, peu importe que l’on choisisse la pré-incrémentation ou la post-incrémentation, car cette instruction est toujours exécutée avant l'édition. Une fois l'étape de boucle terminée, le passage suivant peut débuter.
La valeur de départ, la condition et l’étape de boucle sont des éléments optionnels d'une boucle for. En théorie, il est même possible de créer des boucles vides, bien que ce soit redondant.
C'est à vous de décider si vous écrivez vos scripts PHP avec une boucle for ou while. Cependant, il y a un argument qui plaide en faveur des boucles for. En effet, leur utilisation offre une meilleure vue d'ensemble des données générales de la boucle. Ceci réduit le risque d'écrire accidentellement une boucle infinie qui s'exécute jusqu'à ce que la mémoire de l'interprète soit pleine. Ceci peut arriver avec l'exemple précédent si l’on oublie d'augmenter la valeur de la variable $number.
Cependant, si la boucle doit être exécutée au moins une fois, quelle que soit la condition, la boucle while est celle qui convient le mieux.
Break und continue
Le déroulement d’une boucle while, do while ou for peut être influencé par les instructions break et continue. Utilisez break pour interrompre une boucle à n'importe quel moment, et continue pour sauter le passage d’une boucle. Les deux instructions sont liées à une condition par l'intermédiaire de if. L'exemple suivant montre notre script de calcul avec break :
<?php
for ($number = 1; $number <= 10; $number++) {
if ($number == 5) {
echo "The script stops at 5";
break;
}
echo $number . "<br /> ";
}
?>
Dans la boucle for, nous avons défini que la valeur de la variable $number doit être incrémentée de 1 à partir d'une valeur initiale de 1 dans chaque boucle jusqu'à ce que la variable atteigne 10. Cette boucle est alors arrêtée plus tôt que prévu avec l'instruction break dès que $number atteint 5. La construction de langage echo ne produit donc que les nombres de 1 à 4.
Si l’on souhaite juste sauter le cinquième tour sans pour autant interrompre l’ensemble de la boucle, il faut remplacer l’instruction break par continue.
<?php
for ($number=1; $number <= 10; $number++) {
if ($number == 5) {
echo "We skip number 5!<br />";
continue;
}
echo $number . "<br /> ";
}
?>
Les opérations sur des fichiers
Le contenu Web dynamique est basé sur une séparation du contenu et de la présentation. Les langages de script tels que PHP offrent donc différentes fonctionnalités qui permettent de charger du contenu à partir de sources de données externes dans des fichiers types. Dans la pratique, ces sources de données consistent essentiellement en des bases de données gérées par des systèmes tels que MySQL. Vous trouverez les instructions correspondantes dans notre tutoriel MySQL pour les débutants.
Il est également possible d'intégrer des données issues de fichiers. Dans l’exemple suivant, nous expliquons comment importer des fichiers dans un script PHP sous forme de chaînes et comment stocker le texte de votre script dans des fichiers.
Lire les fichiers
PHP offre diverses fonctionnalités pour lire le contenu d'un fichier, en particulier file() et file_get_contents(). Si la fonction file_get_contents() lit tout le contenu d'un fichier dans une chaîne de caractères, la fonction file() en sauvegarde le contenu sous forme de tableau. Chaque élément du tableau correspond à une ligne du fichier. Avec file() il est donc plus facile de modifier individuellement chaque ligne.
Voici les opérations du fichier PHP sur le fichier texte example.txt, que nous stockons dans le dossier htdocs de notre serveur de test. Le fichier contient quatre lignes de texte à titre d’exemple :
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aenean commodo ligula eget dolor. Aenean massa.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
Pour commencer, nous importons le fichier entier comme une chaîne de caractères. Pour ce faire, il est nécessaire d’attribuer le nom du fichier correspondant en tant que paramètre à la fonction file_get_contents(). Ceci fonctionne selon le schéma suivant :
file_get_contents('example.txt')
Nous pouvons désormais travailler avec la chaîne importée. Par exemple, on peut l'assigner à une variable et la modifier sous forme de texte dans le navigateur Web :
<?php
$example = file_get_contents(‘example.txt');
echo $example;
?>
Dans l’affichage du navigateur, on voit que la chaîne de texte s'affiche sans paragraphes. Les sauts de ligne du fichier d'application initial ne sont pas visibles. Ceci s’explique par le fait que le navigateur Web interprète la sortie de texte du script comme du code HTML. Les alinéas définis dans les éditeurs de texte sont donc perdus lors du processus.
Si l’on souhaite conserver la structure d'origine, il existe plusieurs options. Il est possible d’ajouter un saut de ligne (br) manuellement au code HTML dans le fichier source en utilisant Rechercher et Remplacer, de paramétrer <pre> pour définir le contenu du fichier, d’assigner la propriété CSS white-space: pre-wrap à la zone, ou d’utiliser la fonction nl2br() pour indiquer à PHP que les sauts de ligne doivent être automatiquement convertis en saut de ligne HTML (breaks). Cette fonction s’utilise comme suit :
<?php
$example = file_get_contents(‘example.txt');
echo nl2br($example);
?>
Si l’on souhaite éditer individuellement les lignes d’un fichier, il faut utiliser la fonction file(). Elle permet en effet de lire un fichier, de numéroter toutes les lignes commençant par 0 et d’enregistrer leur contenu comme éléments d'un tableau. Appliquée à notre exemple, cette fonction se présente comme suit :
[0] = Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
[1] = Aenean commodo ligula eget dolor. Aenean massa.
[2] = Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
[3] = Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.
Pour éditer les contenus respectifs avec echo, il suffit de spécifier le numéro de ligne que l’on souhaite modifier. Par exemple, le script suivant affiche seulement la première ligne du fichier example.txt sur le navigateur :
<?php
$example = file("example.txt");
echo $example [0];
?>
Écrire des fichiers
PHP n'est pas seulement capable de lire les fichiers. Le langage de script vous permet également de créer des fichiers et de les décrire avec du contenu.
Pour ce faire, utilisons la fonction PHP file_put_contents(). Ceci présuppose deux paramètres : d’une part le nom du fichier à créer ou à mettre à jour, d’autre part les données sous forme de chaîne ou de tableau. Le script suivant crée le fichier test.txt et écrit la chaîne de caractères This is a test! à la première ligne. L'ajout \r\n provoque un saut de ligne dans le fichier.
<?php
file_put_contents("test.txt", "This is a test! \r\n");
echo "test.txt was created!";
?>
Dans la mesure où file_put_contents ne fournit pas d’affichage pour le navigateur, il convient d’ajouter une instruction echo qui indique l'action à exécuter.
S'il y a déjà un fichier du même nom dans le dossier cible, celui-ci sera écrasé. Pour éviter cette opération, il faut régler le paramètre FILE_APPEND de la façon suivante :
<?php
file_put_contents("test.txt","The test was successful! \r\n", FILE_APPEND);
echo "test.txt was updated!";
?>
Ce que PHP écrit dans le fichier cible n'a pas toujours besoin d'être défini dans le script. Il est également possible de transférer du contenu d'un fichier à un autre. Le script suivant lit le contenu d'example.txt et l'insère dans le fichier test.txt :
<?php
$example = file_get_contents("example.txt");
file_put_contents("test.txt", $example, FILE_APPEND);
echo "test.txt was updated!";
?>