Apprendre PHP - Les Bases
Objectifs
- Comprendre ce qu'est PHP et son rôle dans le développement web
- Connaître l'histoire de PHP et son évolution au fil du temps
- Comprendre ce qu'est un fichier PHP et comment il est utilisé dans le développement web
- Connaître la différence entre une page statique et une page dynamique et comprendre l'importance de PHP dans la création de pages dynamiques
- Apprendre à ouvrir et exécuter un fichier PHP sur un navigateur web
- Comprendre les différents styles d'écriture de PHP, tels que la programmation procédurale et orientée objet
- Apprendre à utiliser la base de travail fournie pour démarrer un projet PHP
- Apprendre à utiliser PHP pour effectuer des tâches côté serveur sur le web
- Découvrir la syntaxe de base de PHP pour les variables et les opérations mathématiques
- Stocker des données dans des tableaux en PHP
- Créer des structures conditionnelles en PHP
- Utiliser les fonctions intégrées de PHP et créer des fonctions personnalisées en PHP
- Apprendre à utiliser POST et GET pour soumettre des formulaires en PHP
- Comprendre l'importance de la structure et de la propreté du code dans le développement PHP
Pré-requis
Pour commencer à apprendre le PHP, vous devez avoir des connaissances de base en HTML et CSS, car le PHP est généralement utilisé pour améliorer les fonctionnalités des pages Web et est souvent intégré directement dans le code HTML. Il est également utile d'avoir une certaine familiarité avec les concepts de programmation tels que les variables, les boucles et les instructions conditionnelles.
Points non couverts par le syllabus
- Gestion de bases de données.
- Gestion des sessions.
- Gestion de fichiers.
- Sécurité.
- Conception orientée objet.
Sommaire
- Objectifs
- Pré-requis
- Points non couverts par le syllabus
- Sommaire
- Infos supplémentaires
- Notes de base de page
Introduction théorique à PHP
PHP ? C'est quoi ?
- PHP est un acronyme de "PHP : Hypertext Preprocessor[^1]".
- PHP est un langage de script open source largement utilisé (ex. Wordpress[^2]).
- Les scripts PHP sont exécutés sur le serveur.
- PHP peut être téléchargé et utilisé gratuitement.
En termes simples, c'est un language de programmation étant destiné à gérer le back-end d'une application web.
Histoire
PHP a été créé par Rasmus Lerdorf, et est apparu pour la première fois en 1995.
Lorsque Rasmus Lerdorf l'a créé, PHP signifiait à l'origine "Personal Home Page". Cependant, au fil du temps, le langage a évolué et le nom aussi. De nos jours, il est connu sous le nom de PHP : Hypertext Preprocessor.
Qu'est-ce qu'un fichier PHP ?
- Les fichiers PHP peuvent contenir du texte, de l'HTML, du CSS, du JavaScript et du code PHP.
- Le code PHP est exécuté sur le serveur et le résultat est renvoyé au navigateur sous forme de document HTML simple.
- Les fichiers PHP portent l'extension
.php
.
PHP a été créé comme un langage de script pour les pages HTML, il n'a jamais perdu sa capacité à s'associer facilement aux documents HTML pour créer du contenu dynamique pour le Web.
Pages statiques vs pages dynamiques
Une page statique et une page écrite directement en HTML. Elle peut éventuellement incorporer du code Javascript lui donnant un semblant de dynamisme mais uniquement du côté du navigateur et des données locales.
Pour des traitements plus lourds nécessitant l'accès à une base de données, un formatage de tableau en fonction de résultats, une recherche poussée, du graphisme, il faut passer par des pages dynamiques et par un langage qui sera exécuté du côté du serveur. (Dans notre cas, PHP)
Pages dynamiques et PHP
PHP est un langage côté serveur. Lors du chargement d'une page PHP, le serveur va lire, interpréter et exécuter le code. Puis il renvoie le résultat, généralement sous la forme de code HTML au navigateur. Ainsi le navigateur et l'utilisateur ne voient jamais le véritable code PHP exécuté.
Introduction pratique à PHP
PHP est un langage qui s'inspire de plusieurs autres, dont C, Perl et C++.
Il est donc possible d'écrire du PHP avec plusieurs styles d'écriture (comme la programmation procédurale[^3] traditionnelle ou la programmation orientée objet[^4]).
C'est pour cela que la structure et la propreté du code sont primordiales pour éviter de se perdre dans le code.
Pour le prochain chapitre, nous allons avoir besoin d'un fichier
.php
basic. Veuillez le télécharger via le lien ci-dessous:
Télécharger la base de travail
Ouvrir un fichier PHP sur le navigateur
Une fois que le fichier index.php a été téléchargé, on peut essayer de l'ouvrir dans un navigateur.
Comme on peut le voir sur l'image ci-dessus, lorsqu'on essaye d'ouvrir le fichier index.php dans le navigateurn, le code source de ce fichier nous est renvoyé.
Le navigateur ne comprend pas le contenu du fichier index.php.
En effet, plus haut nous avions vu que PHP est un langage côté serveur, il nous faut donc un serveur qui va lire, interpréter et exécuter le fichier avant de retourner du code HTML au navigateur.
Serveur Web Local (Web Server Solution Stack)
Pour comprendre ce qu'est un serveur web local, il est important de comprendre ce que chaque terme veut dire:
- Serveur : un programme ou un dispositif informatique qui fournit un service à un autre programme informatique et à son utilisateur.
- Serveur web : Programme ou dispositif informatique exacutant des applications web.
- Local : Qui est exécuté sur la même machine que celle sur laquelle vous êtes actuellement.
En connaissant le sens des ces différents mots, on peut déduire qu'un serveur web local est un logiciel installé sur votre poste de travail qui lui permet de fonctionner (dans certaines limites) comme un serveur web.
Quel stack installer ?
Dans notre cas, nous allons installer XAMPP, car il peut être installé sous n'importe quel OS et dispose déjà de tous les outils dont nous allons avoir besoin pour créer des pages web dynamiques.
Lettre | Signification |
---|---|
X | Une lettre idéographique faisant référence à l'expression "multiplateforme". |
A | Apache, ou sa forme étendue, Apache HTTP Server. |
M | MariaDB (anciennement MySQL). |
P | PHP. |
P | Perl. |
Lien de téléchargement XAMPP: https://www.apachefriends.org/download.html
Installation pour Windows
Article: Comment installer XAMPP pour Windows
Vidéo: Comment télécharger et installer XAMPP sur Windows 10
Installation pour Mac OS
Article: Installation de XAMPP
Vidéo: Comment installer Xampp sur Mac OSX
Installation pour Linux
Cherchez l'article/la vidéo correspondant à votre distribution et version de Linux par vous même. 😛
Lancement du serveur
Afin d'afficher le contenu de notre page index.php nous allons commencer par lancer le serveur Apache[^5] via l'interface de XAMPP.
Appuyer sur le bouton start dans la rangée du module Apache pour lancer le serveur.
Lorsque le module Apache est surligné en vert, cela indique que le serveur est en ligne.
Dans la colonne Port(s)[^6] on peut voir les nombres 80 et 443. Ces nombres représentent les ports ouverts pour les protocoles HTTP et HTTPS respectivement. On peut aussi partler de ces différents ports avec des alias[^7]. Le port utilisé par le protocole HTTP est aussi appelé le port HTTP et le port utilisé par les protocole HTTPS est aussi appelé le port SSL.
Les nombres choisis pour les ports sont le fruit de conventions. Il se peut que certains ports soient déjà utilisés sur le réseau, il faut alors choisir d'autres ports. On peut utiliser l'outil Netstat de XAMPP pour lister tous les ports déjà utilisés.
Racine du serveur web ? C'est quoi ?
Lorsqu'on parle de racine on pense directement a un arbre, une plante, ... Dans notre cas, la racine du serveur web est un dossier où sont stockés les fichiers/sous-dossiers d'un site web. Avec le temps ce dossier pourra être représenté sous forme d'arborescence[^8].
Pour XAMPP, le dossier de racine du serveur web est nommée
htdocs
et est localisée sur: installation_disk:\xampp (ex.
C:\xampp\htdocs
)
On peut essayer de voir ce qu'il y a dans ce dossier directement sur le
navigateur. En entrant le mot clé localhost
dans la barre
d'adresse d'un navigateur web. Le mot localhost
est un alias
pour l'adresse IP 127.0.0.1
qui est une adresse IP de
"loopback".
⚠️:
Tout ce que vous devez retenir c'est que vous pouvez accéder au dossier
htdocs en utilisant l'adresse IP 127.0.0.1
ou son alias
localhost
dans la barre d'addresse de votre navigateur
Localhost
Lorsque l'on recherche localhost
dans la barre d'addresse, la
recherche se transforme en
http://localhost/dashboard.
En réalité, la recherche ne se transforme pas vraiement, le comportement par défaut d'un serveur Apache est de lire, interpréter et exécuter le code se trouvant dans un fichier nommé index.php à l'addresse demandée.
En effet, on trouve bien un fichier index.php à la racine du serveur web (dossier DISKNAME://xampp/htdocs).
Le fichier index.php contient un script de redirection[^9]. C'est pour cela que l'url que l'on entre, change. On est donc redirigé
vers le dossier /dashboard
se trouvant lui-même dans le
dossier /htdocs
.
Découpons cette URL:
Protocole | Délimiteur de protocole | Nom de domaine | Indicateur de répertoire | Sous-Dossier |
---|---|---|---|---|
http | :// | localhost | / | dashboard |
Détail de la requête
- Protocole: Indique le type de connection (Securisée ou non)
- Délimiteur: Indique la fin du marqueur de protocole[^10]
- Nom de domaine: Alias de l'adresse IP du serveur
- Indicateur de répertoire: Indique le changement de direction vers un nouveau dossier
- Sous-Dossier: Indique le nom du dossier vers lequel aller
Création d'un sous-dossier personnalisé
Nous pouvons créer de nouveaux sous-dossiers dans le répertoire racine du serveur afin d'herberger nos sites/applications dynamiques.
Pour se faire, on va tout simplement créer un nouveau dossier dans le répertoire racine du serveur:
Nous pouvons dès lors accéder au répertoire depuis notre navigateur web
avec l'url suivante: localhost/NOM_DU_RÉPERTOIRE
.
Dans mon cas, localhost/cours-php
.
Retour du serveur
Le serveur nous renvois un explorateur de fichiers sur le navigateur car il ne voit pas de fichier à lire dans le répertoire.
Création d'un script
Rappel: Les fichiers PHP ont pour extension: .php
.
Une page PHP peut ne contenir que du script PHP ou un mélange d'HTML et de script PHP (Script intégré).
Maintenant que l'on a notre arborescence de dossiers, on peut créer notre premier fichier de script dans le sous dossier que l'on a créé à l'étape précédante.
Il est important que le premier script soit nommé
index.php
pour qu'il soit lu dès que le serveur accède au
répertoire dans lequel il se trouve.
Une fois que le script est créé, on peut ouvrir le répertoire dans notre éditeur de code (DISKNAME://xampp/htdocs/cours-php) et dans le navigateur web (localhost/cours-php).
Affichage du répertoire dans l'éditeur de code
Nous n'avons encore rien écrit sur le script PHP.
Affichage du script index.php dans le navigateur
Comme on pourrait s'y attendre, il n'y a rien d'affiché sur la page car on ne donne aucune instruction au serveur. Remarquez qu'il n'y a même pas d'erreur. (Une page sans contenu n'est pas considérée comme une erreur).
Syntaxe basique
Script simple
Comme cité plus tôt, une page PHP peut ne contenir que du script PHP. Pour se faire, il faut ouvrire une balise de script PHP. Cette balise est primordiale, le code sera traité comme du texte HTML si elles n'est pas présente. La balise permet au serveur de différencier le script PHP et les balises HTML.
La balise php est composée de deux parties: une ouverture de balise et une fermeture.
<?php//balise d'ouverture de script PHP
// ... Script à exécuter
?>// balisede de fermeture de script PHP
Remarque: la balise de fermeture de script n'est pas obligatoire lorsque la page PHP ne contient que du script.
Script intégré
Pour combiner de l'HTML et du script PHP c'est assez simple. On commence par la structure de base d'une page HTML et on y ajoute des balises de script PHP là où on en a besoin.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Index.php</title>
</head>
<body>
<?php//balise d'ouverture de script PHP
// ... Script à exécuter
?>// balisede de fermeture de script PHP
<body>
</html>
Commentaires
Les commentaires sont des explications ou annotations lisible par le programmeur dans le code source d'un programme. Ils ne sont pas lus par le serveur.
PHP supporte les styles de commentaires des languages C, C++ et Perl. Il existe plusieurs types de commentaires:
- Les commentaires "one-line"
- Les commentaires "multi-line"
Les commentaires one-line peuvent s'écrire avec deux préfixes: "//" et "#". C'est deux prefixes permettent de créer un commentaire sur une ligne.
<?php
// Ceci est un commentaire sur une ligne
# Cela aussi
Les commentaires multi-line s'écrivent avec une ouverture et une fermeture de zone de commentaires. Les commentaires multi-line ressemblent beaucoup aux commetaires en CSS et JavaScript.
<?php
/* Ceci est
un commentaire
sur plusieurs
lignes */
Variables
Comme dans de nombreux language de programmation, PHP dispose de variables. Ce sont des contenurs d'informations.
PHP est un langage à typage dynamique, ce qui signifie que par défaut, il n'est pas nécessaire de spécifier le type d'une variable, car il sera déterminé au moment de l'exécution du script.
Déclaration
En PHP les variables sont déclarés avec le sign $
.
Les variables sont sensibles à la casse[^11]. Un nom de variable valide commence par une lettre ou un trait de soulignement, suivi d'un nombre quelconque de lettres, de chiffres ou de traits de soulignement.
<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var"; // retourne "Bob, Joe"
$4site = 'url'; // invalide ; commence par un chiffre
$_4site = 'url'; // valide ; commence par un underscore
$täyte = 'mansikka'; // valide ; 'ä' est un code ASCII 228 (étendu)
Types
PHP supporte au total huit types de données primitives. Ces types de données sont utilisés pour construire des variables.
Type | Signification |
---|---|
null | La valeur spéciale NULL est utilisée pour représenter les variables vides en PHP. |
boolean |
N'a que deux valeurs possibles, true (vrai) ou
false (faux).
|
int | C'est un nombre entier, sans virgule, positifs ou négatifs. |
float | C'est un nombre réel, positifs ou négatifs , avec virgules, fractions... |
string | C'est une chaîne de caractères. |
array | Variable pouvant contenir plus d'une valeur à la fois. |
object | Stocke des valeurs de plusieurs types ensemble. (aka Class) |
resource | Variable spéciale, contenant une référence à une ressource externe. |
Le type des variables que l'on va créer est déterminé lors de l'execution du code. Il faut alors faire attention à la façon de déclarer et d'assigner une valeur à une variable.
En effet, la déclaration et l'assignation d'une valeur à une variable peut légerement changer en fonction du type de variable que l'on va créer.
Int & float
Voilà, comment déclarer des variables de type numérique. Dans l'exemple ci-dessous, on utilise un opérateur arithmétique pour effectuer des calculs.
On parlera des opérateurs arithmétiques plus tard.
<?php
$entier = 12; // Entier
$reel = -5.1; // Réel
$resultat = $entier + $reel; // $resultat = 6.9
String
Pour déclarer une variable de type string, il faut encapsuler la valeur
entre des guillemets - simples ''
ou doubles
""
.
Il existe un opérateur de concaténation .
pour les variables
de type string. Il permet de mettre des chaînes de caractère ou des
variables de type string bout à bout.
<?php
$mot1 = "Hello"; // Guillemets doubles
$mot2 = 'World'; // Guillemets simples
$phrase = $mot1 . " " . $mot2; // $phrase = "Hello World"
Array
En PHP les tableau sont indexés à 0, c'est à dire qu'on commence à compter le nombres d'éléments à partir de 0. Les premier élément du tablea est en fait l'élément à l'index 0.
Il y a plusieurs types de tableau en PHP:
Type | Description |
---|---|
Tableau numérique | Tableau avec un index numérique. |
Tableau associatif | Tableau ossociant un string à une valeur. |
Tableau multidimentionnel | Un tableau contenant un ou plusieurs tableaux. |
<?php
//-------------------------------
// Tableau numériques
//-------------------------------
// Notation longue
$tableau = array(1, 2, 3, 4, 5);
// Notation raccourcie
$tableau = [1, 2, 3, 4, 5];
//-------------------------------
// Tableau associatif
//-------------------------------
// Notation longue
$tableau = array(
"foo" => "bar",
"bar" => "foo",
);
// Notation raccourcie
$tableau = [
"foo" => "bar",
"bar" => "foo",
];
//-------------------------------
// Tableau multidimentionnel
//-------------------------------
// Notation longue
$tableau = array(
array("Nom 1", "Prénom 1"),
array("Nom 2", "Prénom 2"),
array("Nom 3", "Prénom 3"),
array("Nom 4", "Prénom 4"),
array("Nom 5", "Prénom 5"),
);
// Notation raccourcie
$tableau = [
["Nom 1", "Prénom 1"],
["Nom 2", "Prénom 2"],
["Nom 3", "Prénom 3"],
["Nom 4", "Prénom 4"],
["Nom 5", "Prénom 5"],
];
Boolean
<?php
$foo = true; // assigner la valeur true à $foo
$bar = false; // assigner la valeur true à $bar
Outputs
Il y a deux façons basiques de retourner des données au navigateur:
echo
et print
Les différences sont minimes : echo
n'a pas de valeur de
retour alors que print
a une valeur de retour de 1 et peut
donc être utilisé dans des expressions. echo
peut prendre
plusieurs paramètres (bien qu'une telle utilisation soit rare) alors que
print
peut prendre un seul argument. echo
est
marginalement plus rapide que print.
echo
La déclaration d'echo
peut se faire avec ou sans paranthèses.
On peut retourner plusieurs types de données au navigateur, même des
balises HTML.
Afficher du texte
<?php
echo("<h1>Ce titre est généré par php</h1>"); // echo avec paranthèses
echo "<ul><li>"; // echo sans paranthèses
echo "L'ouverture est la fermeture d'une balise ne doit pas forcément se faire sur la même ligne";
echo "</li></ul>";
Afficher des variables
<?php
$mot1 = "Hello";
$mot2 = 'World';
$phrase = $mot1 . " " . $mot2;
$a = 5;
$b = 2;
echo "<h1>" . $phrase . "</h1>";
echo "<var>" . $a . "</var> * <var>" . $b . "</var> = <var>" . $a * $b . "</var>";
La déclaration de print
se fait exactement de la même façon
qu'echo
à la seule différence qu'on utilise le mot clé
print
au lieu d'echo
.
Afficher du texte
<?php
print("<h1>Ce titre est généré par php</h1>"); // print avec paranthèses
print "<ul><li>"; // print sans paranthèses
print "L'ouverture est la fermeture d'une balise ne doit pas forcément se faire sur la même ligne";
print "</li></ul>";
Afficher des variables
<?php
$mot1 = "Hello";
$mot2 = 'World';
$phrase = $mot1 . " " . $mot2;
$a = 5;
$b = 2;
print "<h1>" . $phrase . "</h1>";
print "<var>" . $a . "</var> * <var>" . $b . "</var> = <var>" . $a * $b . "</var>";
Opérateurs
Un opérateur est un caractère ou une suite de caractères qui représente une action ou un processus mathématique ou logique spécifique.
On utilise très souvent certains opérateurs en PHP afin de manipuler les données que l'on récupère d'une base de données, d'un utilisateur, ...
Il existe à peu près une douzaine de groupes d'opérateurs en PHP. Pour commencer nous n'allons survoler que 5 de ces groupes.
Opérateurs arithmétiques
Les opérateurs arithmétiques sont les plus simples à comprendre, on les utilise quasiment tous au quotidient.
Exemple | Nom | Opération |
---|---|---|
+$a | Identité | Conversion de $a en int ou float selon le cas. |
-$a | Négation | Opposé de $a. |
$a + $b | Addition | Somme de $a et $b. |
$a - $b | Soustraction | Différence de $a et $b. |
$a * $b | Multiplication | Produit de $a et $b. |
$a / $b | Division | Quotient de $a et $b. |
$a % $b | Modulo | Reste de $a divisé par $b. |
$a ** $b | Exponentiation | Résultat de l'élévation de $a à la puissance $b. |
Opérateurs d'assignation
L'opérateur d'assignation de base est le signe =
, nous avons
eu l'occasion de le voir plus haut.
Opérateur d'assignation arithmétiques
Souvent, lorsque l'on programme en PHP on a besoin d'additionner, de soustraire, ... la valeur d'une variable et réaffecter cette variable avec la valeur qui vient d'être générée.
Il est possible d'utiliser une expression raccourcie pour remplacer ces opérations:
Exemple | Equivalent | Opération |
---|---|---|
$a += $b | $a = $a + $b | Addition |
$a -= $b | $a = $a - $b | Soustraction |
$a *= $b | $a = $a * $b | Multiplication |
$a /= $b | $a = $a / $b | Division |
$a %= $b | $a = $a % $b | Modulus |
$a **= $b | $a = $a ** $b | Exponentiation |
Opérateurs d'incrémentation/de décrémentation
Les opérteurs d'incrémentation/de décrémentation permettent d'incrémenter ou de décrémenter une variable de un.
Il existe deux manières d'incrémentater/de décrémenter une variable:
- Pre-increment/Pre-decrement
- Post-increment/Post-decrement
Voici les différences entre les opérateurs de pre/post increment/decrement:
Exemple | Nom | Effet |
---|---|---|
++$a | Pré-incrémentation | Incrémente $a de un, puis retourne $a. |
$a++ | Post-incrément | Renvoie $a, puis incrémente $a de un. |
--$a | Pré-décrémentation | Décrémente $a de un, puis retourne $a. |
$a-- | Post-décrémentation | Renvoie $a, puis décrémente $a de un. |
Opérateurs de comparaison
Les opérateurs de comparaison permettent de comparer deux valeurs. Ils sont très souvent utilisés en PHP afin de vérifier des valeurs, contrôler des comportements en fonctions de situations, ...
Exemple | Nom | Résultat |
---|---|---|
$a == $b | Égal |
true si $a est égal à $b après jonglage de type.
|
$a === $b | Identique |
true si $a est égal à $b, et qu'ils sont du même type.
|
$a != $b | Non égal |
true si $a n'est pas égal à $b après jonglage de type.
|
$a <> $b | Non égal |
true si $a n'est pas égal à $b après jonglage de type.
|
$a !== $b | Non identique |
true si $a n'est pas égal à $b, ou s'ils ne sont pas du
même type.
|
$a < $b | Inférieur à |
true si $a est strictement inférieur à $b.
|
$a > $b | Supérieur à |
true si $a est strictement supérieur à $b.
|
$a <= $b | Inférieur ou égal à |
true si $a est inférieur ou égal à $b.
|
$a >= $b | Supérieur ou égal à |
true si $a est supérieur ou égal à $b.
|
$a <=> $b | Spaceship | Un rée inférieur, égal ou supérieur à zéro lorsque $a est inférieur, égal ou supérieur à $b, respectivement. |
Les opérateurs de comparaison les plus utilisés en général sont
égal
, Non égal
, inférieur à
et
supérieur à
.
Opérateurs logiques
Un opérateur logique est un symbole, un groupe de symboles ou un mot utilisé pour connecter deux ou plusieurs expressions de telle sorte que la valeur de l'expression composée produite ne dépende que de celle des expressions d'origine et de la signification de l'opérateur.
Exemple | Nom | Résultat |
---|---|---|
$a and $b | Et |
true si $a et $b sont tous deux true .
|
$a && $b | Et |
true si $a et $b sont tous deux true .
|
$a or $b | Ou |
true si $a ou $b est true .
|
$a | | $b | Ou |
true si $a ou $b est true .
|
$a xor $b | Ou Exclusif |
si $a ou $b est true , mais pas les deux.
|
! $a | N'est pas | si $a n'est pas true . |
Stuctures de contrôle
Tout script PHP est construit à partir d'une série d'instructions. Une instruction peut être une affectation, un appel de fonction, une boucle, une instruction conditionnelle ou même une instruction qui ne fait rien (une instruction vide). Les instructions se terminent généralement par un point-virgule.
Instruction conditionnelle
if
La structure conditionnelle de base est composée de deux parties: une
partie commençant par if
pour décrire une situation possible
et la seconde partie qui décrit la conséquence.
Lorsque l'on écrit un script, une structure conditionnelle permet une execution conditionnelle d'un fragment de code.
Il y a plusieurs façons d'écrire une instruction conditionnelle en PHP:
<?php
$a = 1;
$b = 2;
// Notation "classique"
if ($a > $b){
echo $a . " est plus grand que " . $b;
}
// Notation par mot clés
if ($a > $b):
echo $a . " est plus grand que " . $b;
endif;
if-else
Souvent, nous avons besoin d'exécuter une instruction si une certaine
condition est remplie, et une autre instruction si la condition n'est pas
remplie. C'est à cela que sert la clause else
.
else
étend une instruction if
pour exécuter une
instruction dans le cas où l'expression de l'instruction
if
est évaluée comme false
.
Reprennons l'exemple précédent pour visualiser les différentes façons
d'écrire une clause else
:
<?php
$a = 1;
$b = 2;
// Notation "classique"
if ($a > $b){
echo $a . " est plus grand que " . $b;
} else {
echo $b . " est plus grand que " . $a;
}
// Notation par mot clés
if ($a > $b):
echo $a . " est plus grand que " . $b;
else:
echo $b . " est plus grand que " . $a;
endif;
elseif/else if
elseif
, comme son nom l'indique, est une combinaison de
if
et else
. Comme else
, elle étend
une instruction if
pour exécuter une autre instruction au cas
où l'expression if
d'origine serait fausse. Toutefois,
contrairement à else
, elle n'exécutera cette expression
alternative que si l'expression conditionnelle elseif
est
évaluée comme true
.
Remarque: Lorsqu'on écrit une instruction conditionnelle
elseif
avec des accolades, les mots clées
elseif
et else if
sont des synonymes les uns des
autres. Par contre, si l'instruction conditionnelle est écrité avec
deux-points, le mot clé ne peut pas contenir d'espace, ou PHP
retournera une erreur lors de la lecture.
<?php
$a = 1;
$b = 2;
// Notation "classique"
if ($a > $b){
echo $a . " est plus grand que " . $b;
} else if ($a == $b){
echo $b . " est égal à " . $a;
}else {
echo $b . " est plus grand que " . $a;
}
// Notation par mot clés
if ($a > $b):
echo $a . " est plus grand que " . $b;
elseif ($a == $b):
echo $b . " est égal à " . $a;
else:
echo $b . " est plus grand que " . $a;
endif;
switch
L'instruction switch
est similaire à une série d'instructions
ìf
sur la même expression. Dans de nombreuses occasions, vous
pouvez vouloir comparer la même variable (ou expression) avec plusieurs
valeurs différentes, et exécuter un morceau de code différent en fonction
de la valeur à laquelle elle est égale.
<?php
$i = 1;
// Instruction switch:
switch ($i) {
case 0:
echo "i est égal à 0";
break;
case 1:
echo "i est égal à 1";
break;
case 2:
echo "i est égal à 2";
break;
}
// Équivalent avec une instruction if:
if ($i == 0) {
echo "i est égal à 0";
} elseif ($i == 1) {
echo "i est égal à 1";
} elseif ($i == 2) {
echo "i est égal à 2";
}
Boucles/Loops
Une boucle est une séquence d'instructions qui est continuellement répétée jusqu'à ce qu'une certaine condition soit atteinte.
Il existe 4 types de boucles en PHP:
while
do...while
for
foreach
while
Boucle dans un bloc de code jusqu'à ce qu'une condition donnée est évaluée
comme true
.
<?php
// Notation "classique"
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
// Notation par mot clés
$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;
do...while
Les boucles do...while
sont très similaires aux boucles
while
, à la différence que la condition d'itération est
vérifiée à la fin de chaque itération et non au début. La principale
différence avec les boucles while
normales est que la première
itération d'une boucle do...while
est garantie (la condition
d'itération n'est vérifiée qu'à la fin de l'itération).
<?php
$i = 0;
// Une seule notation pour la boucle do...while
do {
echo $i;
} while ($i > 0);
for
Les boucles for
sont les plus complexes mais ce sont celles
que l'on voit le plus souvent en PHP.
Une boucle for
s'écrit comme cela:
for (expr1; expr2; expr3) {
// instructions
}
-
La première expression (
expr1
) est évaluée une seule fois au début de la boucle. C'est l'expression d'initialisation de boucle. -
La deuxième expression (
expr2
) est évaluée au début de chaque itération. Si cette expression est évaluée commetrue
, la boucle continue et exécute les instructions données. Sinon, l'exécution de la boucle prend fin. -
La troixième expression (
expr3
) est exécutée à la fin de chaqueitération[^12]. - Les instructions sont les différentes lignes de code à exécuter à chaque itération de la boucle.
Voici les différentes façons d'écrire une boucle for:
<?php
// Notation "classique"
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
// Notation par mot clés
for ($i = 1; $i <= 10; $i++):
echo $i;
endfor;
foreach
L'instruction foreach
fournit un moyen facile d'itérer sur des
tableaux. foreach
fonctionne uniquement sur les tableaux et
les objets et émettra une erreur si vous essayez de l'utiliser sur une
variable avec un type de données différent ou une variable non initialisée.
Il existe deux syntaxes :
foreach (expression_itérable as $valeur){
// instructions
}
foreach (expression_itérable as $clef => $valeur){
// instructions
}
La première syntaxe parcourt l'expression itérable[^13]. À chaque itération, la valeur de l'élément actuel est affectée à
$valeur
.
La deuxième syntaxe (syntaxe déconstruite), en plus de faire tout
ce que la première syntaxe fait, assigne la clé de l'élément actuel à la
variable $clef
à chaque itération. Cela permet de récupérer la
clé et la valeur de l'élément actuel.
Voici les différentes façons d'écrire une boucle foreach avec la première syntaxe:
<?php
$tableau = array(1, 2, 3, 4);
// Notation "classique
foreach ($tableau as $valeur) {
echo $valeur;
}
// Notation par mot clés
foreach ($tableau as $valeur):
echo $valeur;
endforeach;
Voici les différentes façons d'écrire une boucle foreach avec la deuxième syntaxe (syntaxe déconstruite):
<?php
$tableau = array(
"trois" => 3,
"une" => 1,
"quatre" => 4,
"deux" => 2
);
// Notation "classique
foreach ($tableau as $case => $valeur) {
echo $case . " est associé à " . $valeur;
}
// Notation par mot clés
foreach ($tableau as $case => $valeur):
echo $case . " est associé à " . $valeur;
endforeach;
Require & Require_once
En PHP il est possible de séparer notre code en plusieurs fichiers distincts afin de moduliser notre projet.
La modulisation d'un projet permet de créer des modules indépenadants les
uns des autres, de rendre la réutilisation de parties de code plus simple
(différent d'une function
) et de rendre la lecture de notre
code plus simple.
require vs require_once
require
permet d'inclure et d'exécuter un fichier spécifique
(module) au sein d'un autre fichier.
<?php
require('helper_functions.php');
require_once
permet la même chose que
require
mais s'assure que le fichier demandé ne soit pas
inclut une deuxième fois au sein d'un même fichier.
<?php
require('helper_functions.php');
require('helper_functions.php'); // Retourne une `FATAL ERROR`
/*
Le fichier 'helper_functions.php' contient des déclarations
de fonctions. PHP ne permet pas la redéclaration de fonctions.
*/
<?php
require_once('helper_functions.php');
require_once('helper_functions.php'); // N'inclut pas le fichier une deuxième fois => pas d'erreur
Functions
Les fonctions PHP sont similaires à celles des aux autres langages de programmation. Une fonction est un morceau de code qui prend une entrée supplémentaire sous forme d'au moins un paramètre, effectue un traitement et renvoie une valeur.
Fonctions prédéfinies
PHP est livré avec de nombreuses fonctions par défaut. Nous en avons déjà
vues deux, echo
et print
.
Voici quelques fonctions intéressantes supplémentaires:
Nom | Description |
---|---|
count | Retourne le nombre d'éléments dans un dénombrable (expression itérable). |
strlen | Retourne la longueur d'une chaîne de caractères. |
is_array |
Retourne true si la variable est un tableau.
|
substr | Retourne une partie d'une chaîne de caractères. |
in_array |
Retourne true si une valeur existe dans un tableau.
|
mb_split | Retourne un tableau contenant une chaîne de caractères découpée. |
join | Retourne une chaîne de caractères à partir d'un tableau. |
sprintf | Retourne une chaîne de caractères formatée. |
rand | Retourne une valeur numérique au hasard. |
isset | Déterminer si une variable est déclarée et si elle est différente de null. |
Il existe une liste de tous les fonctions existant par défaut en PHP sur le site officiel du language.
Fonctions personnalisées
Comme dans beaucoup de languages de programmation, PHP nous permet de créer nos propres fonctions.
La syntaxe pour créer une fonction est la suivant:
<?php
function nomDeLaFonction($arg_1, $arg_2, $arg_x){
// instructions
}
Partie de la déclaration | Description |
---|---|
function | Initie la déclaration d'une fonction personnalisée. |
nomDeLaFonction | Définit le nom de la fonction. |
($arg_1, $arg_2, $arg_x) | Liste des arguments utilisés par la fonction. |
// instructions | Instructions à exécuter à l'appel de la fonction. |
Arguments
Des informations peuvent être transmises aux fonctions via la liste
d'arguments, qui est une liste d'expressions délimitées par des virgules.
Les arguments sont évalués de gauche à droite, avant que la fonction ne
soit réellement appelée (évaluation rapide). Les arguments sont déclarés
comme des variables (en utilisant le signe $
).
Les information sont passées à la fonction lorsqu'elle est appelée:
<?php
$prenom = "Pierre";
function salut($prenom_user){
echo "Hello " . $prenom_user . " !";
}
salut($prenom);
Return
Les valeurs sont renvoyées à l'aide de l'instruction facultative
return
. Tout type de valeur peut être retourné, y compris les
tableaux et les objets. La fonction termine alors immédiatement son
exécution et renvoie le contrôle à la ligne à partir de laquelle elle a été
appelée.
Voici un example de situation où une fonction retourne une valeur:
<?php
$a = 5;
$b = 10;
function multiply($fact_1, $fact_2){
return $fact_1 * $fact_2;
}
echo "Le résultat de la multiplication de " . $a . " et " . $b ." est " . multiply($a, $b);
// Le résultat de l'expression ci-dessus est => 'Le résultat de la multiplication de 5 et 10 est 50'
Super-globales
Les super-globales sont des variables intégrées qui sont toujours disponibles dans tous les scopes. Il n'y a donc pas besoin de les déclarer de manière globale avant leur utilisation.
Les super-globales sont écrites avec des caractères majuscules et
commencent avec le signe trait de soulignement (sauf
$GLOBALS
).
Il y a 9 super-globales en PHP:
Nom | Contenu |
---|---|
$GLOBALS | Référence toutes les variables disponibles dans la portée globale. |
$_SERVER | Informations sur le serveur et l'environnement d'exécution. |
$_GET | Variables HTTP GET. |
$_POST | Variables HTTP POST. |
$_FILES | Variables de téléchargement de fichiers HTTP. |
$_REQUEST | Variables de la requête HTTP. |
$_SESSION | Variables de la session. |
$_ENV | Variables d'environnement. |
$_COOKIE | Cookies HTTP. |
Les super-globales que l'on va le plus souvent utiliser sont
$_GET
et $_POST
. Ce sont deux variables de type
array
(plus précisément: associative array
).
Les raisons pour lesquelles nous allons beaucoup utiliser ces variables sont assez simples. C'est parce qu'elles permettent de récupérer des données envoyées par les utilisateurs.
En effet, lorsqu'un utilisateur envoie une série de données depuis un formulaire en HTML, ces données sont souvent traitées par PHP.
$_GET vs $_POST
La principale différence entre $_GET
et
$_POST
est la manière dont les données sont envoyées et
récupérées.
Lorsqu'un formulaire est soumis en utilisant la méthode GET, les données sont ajoutées à l'URL de la page de destination sous forme de paramètres de requête. Cela signifie que les données sont visibles dans l'URL et peuvent être facilement partagées ou bookmarkées. Cependant, la méthode GET a une limite de taille de données et n'est pas sécurisée, car les données peuvent être facilement modifiées ou interceptées.
Au contraire, lorsqu'un formulaire est soumis en utilisant la méthode POST, les données sont envoyées de manière cachée au serveur via le corps de la requête HTTP. Cela signifie que les données ne sont pas visibles dans l'URL et ne peuvent pas être facilement partagées ou bookmarkées. La méthode POST est généralement utilisée pour envoyer des données sensibles ou de grande taille et est considérée comme plus sécurisée que la méthode GET.
En résumé, la méthode GET est utilisée pour récupérer des données de manière visible et non sécurisée, tandis que la méthode POST est utilisée pour envoyer des données de manière cachée et sécurisée.
Récupérer des infos depuis un formulaire HTML
GET
Pour récupérer des informations d'un formulaire HTML en PHP en utilisant la
méthode GET, vous devez d'abord créer un formulaire HTML en
utilisant des éléments de formulaire tels que <input>
,
<select>
et <textarea>
. Chaque
élément de formulaire contenant des données doit avoir un attribut
name
afin que vous puissiez récupérer les données en PHP.
Voici un exemple de formulaire HTML simple :
// Fichier: index.html
<form action="process.php" method="GET">
<label for="username">Nom d'utilisateur:</label><br />
<input type="text" id="username" name="username" /><br />
<label for="age">Âge:</label><br />
<input type="age" id="age" name="age" /><br /><br />
<input type="submit" value="Envoyer" />
</form>
Dans cet exemple, le formulaire a une action définie sur
process.php et utilise la méthode GET pour envoyer les
données. Le formulaire comprend également deux champs de saisie,
username
et age
, qui ont tous deux un attribut
name
avec une valeur.
Pour récupérer les données du formulaire en PHP, vous devez d'abord
vérifier si le formulaire a été soumis en utilisant la bonne méthode. Vous
pouvez vérifier ça avec la super-globale
$_SERVER['REQUEST_METHOD']
dans une structure de contrôle
if
. Si la méthode de soumission est GET, vous pouvez
récupérer les données du formulaire en utilisant la super-globale
$_GET
.
Afin de récupérer les données contenues dans $_GET
, il suffit
de traiter cette variable comme un tableau associatif ... car ça
en est un.
L'attribut name
des <inputs>
en HTML permet
de déterminer le nom des clés dans le tableau associatif
$_GET
. Dans notre cas, $_GET
possèdera deux clés
username
et age
. On accède à leurs valeurs en
utilisant des crochets []
contenant le nom des clés sous forme
de string
(Ex.: $_GET["username"]
).
Voici un exemple de code PHP qui récupère les données du formulaire ci-dessus :
// Fichier: process.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$username = $_GET['username'];
$age = $_GET['age'];
echo "Nom d'utilisateur: " . $username . "<br>";
echo "Mot de passe: " . $age;
}
Dans cet exemple, on vérifie si le formulaire a été soumis en utilisant la méthode GET. Si c'est le cas, il stocke les valeurs dans des variables puis affiche les valeurs de ces dernières à l'utilisateur.
Le navigateur nous retourne une nouvelle URL, découpons cette URL afin de mieux la comprendre:
Racine du serveur local | Sous-dossier | Fichier php | Query string | Paire clé-valeur | Séparateur | Paire clé-valeur |
---|---|---|---|---|---|---|
http://localhost | /cours-php | /process.php | ? | username=Olivier | & | age=37 |
Détail de la requête
- Racine du serveur local: Voir chapitre sur le localhost.
- Sous-dossier: Indique le nom du dossier vers lequel aller.
- Fichier php: Fichier traitant les données envoyées depuis le page HTML.
- Query string: Indique le début de la zone de déclaration de variables.
- Paire clé-valeur: Indique le nom d'une variable et la valeur qui lui est associée.
- Séparateur: Indique la déclaration d'une nouvealle variable.
Voilà ce qui est affiché sur la page du navigateur:
POST
Comme avec la méthode GET, il faut un formulaire HTML dont les
<input>
ont un attribut name
avec une
valeur afin de pouvoir récupérer les informations envoyées depuis le
formulaire.
Voici l'example de page HTML que l'on va utiliser avec la méthode POST:
// Fichier: index.html
<form action="process.php" method="POST">
<label for="username">Nom d'utilisateur:</label><br />
<input type="text" id="username" name="username" /><br />
<label for="password">Mot de passe:</label><br />
<input type="password" id="password" name="password" /><br /><br />
<input type="submit" value="Envoyer" />
</form>
Dans cet exemple, le formulaire a une action définie sur
process.php et utilise la méthode POST pour envoyer les
données au serveur. Le formulaire comprend également deux champs de saisie,
username
et password
.
Ici aussi, nous allons vérifier si la méthode de soummission est correcte
avant d'essayer de récupérer les données du formulaire en PHP. Pour
récupérer les valeurs dans la super-globale $_POST
,
c'est le même procédé qu'avec la méthode GET. Il suffit juste de
connaître les valeurs des attributs name
du formulaire HTML.
Voici un exemple de code PHP qui récupère les données du formulaire ci-dessus :
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
echo "Nom d'utilisateur: " . $username . "<br>";
echo "Mot de passe: " . $password;
}
Dans cet exemple, le code vérifie si le formulaire a été soumis en utilisant la méthode POST. Si c'est le cas, il stocke les valeurs dans des variables puis affiche les valeurs de ces dernières à l'utilisateur.
Le navigateur nous renvoie vers la page process.php mais n'affiche pas les valeurs des variables dans la barre d'url car les données sont cryptées[^14] en méthode POST.
Headers
Les en-têtes PHP sont un moyen d'envoyer des en-têtes HTTP à un client (généralement un navigateur Web) à partir d'un script PHP. Ils peuvent être utilisés pour définir le type de contenu, rediriger un client vers une autre URL ou lui envoyer un cookie.
Les en-têtes PHP sont définis à l'aide de la fonction
header()
. La fonction header()
prend un argument
de type string
, qui spécifie l'en-tête à envoyer. Voici un
example d'en-tête, pour définir le type de contenu comme
"text/html":
<?php
header("Content-Type : text/html");
Remarque : Vous devez appeler la fonction
header()
avant d'envoyer toute autre sortie au client.
Certains en-têtes sont utilisés assez souvent:
Description | Écriture |
---|---|
Définition du type de contenu de la page | header("Content-Type : text/html"); |
Redirection d'un client vers une autre URL |
header("Location : http://www.example.com/");
|
Envoi d'un cookie à un client |
header("Set-Cookie: user=$_POST[email]; expires=Sun, 31-Dec-23
00:00:00 GMT;path=/; domain=yourdomain.com");
|
Remarques:
- Il est important de savoir que les en-têtes ne peuvent être définis qu'avant l'envoi de toute sortie au client. Si vous essayez de définir un en-tête après que la sortie a déjà été envoyée, vous obtiendrez un message d'avertissement.
-
Veillez également à ne pas envoyer d'espace ou d'autres données de sortie
avant d'appeler la fonction
header()
, car cela peut également poser des problèmes.
Infos supplémentaires
Templates de chaînes de caractères
Il est possible d'utiliser ce qu'on appelle des
templates de chaînes de caractères pour faciliter l'écriture et la
lecture d'un string
en utilisant des
guillemets doubles et des accolades. Les
string templates permettent d'utiliser des variables directement
dans la chaîne de caractères que l'on souhaite écrire.
Réécrivons une instruction echo
écrite plus tôt dans le
syllabus sous forme de string template:
<?php
// Concaténation
echo "Le résultat de la multiplication de " . $a . " et " . $b ." est " . multiply($a, $b);
// Templates de chaînes de caractères
echo "Le résultat de la multiplication de {$a} et {$b} est " . multiply($a, $b);
Comme nous pouvons le voir, l'instruction est plus facile à écrire et à lire.
Notes de base de page
[^1]: Un préprocesseur (ou précompilateur) est un programme qui traite des données d'entrée pour produire des données de sortie utilisées par un autre programme. ↩️
[^2]: WordPress est un système de gestion de contenu (SGC ou content management system (CMS) en anglais) gratuit, libre et open-source. ↩️
[^3]: Dans la programmation procédurale le programme est divisé en petites parties appelées procédures ou fonctions. Comme son nom l'indique, la programmation procédurale contient une procédure étape par étape à exécuter. ↩️
[^4]: La programmation par objet consiste à utiliser des techniques de programmation pour mettre en œuvre une conception basée sur les objets. ↩️
[^5]: Le logiciel libre Apache HTTP Server (Apache) est un serveur HTTP créé et maintenu au sein de la fondation Apache. ↩️
[^6]: Dans la suite des protocoles Internet et correspondant à la couche transport du modèle OSI, la notion de port logiciel permet, sur un ordinateur donné, de distinguer différents interlocuteurs. Ces interlocuteurs sont des programmes informatiques qui, selon le cas, écoutent ou transmettent des informations sur ces ports. Un port se distingue par son numéro. ↩️
[^7]: Alias est un adverbe qui permet d'introduire un surnom, un nom d'emprunt ou un pseudonyme. ↩️
[^8]: Une arborescence désigne alors généralement une organisation des données en mémoire, de manière logique et hiérarchisée, utilisant une structure algorithmique d'arbre. Cette organisation rend plus efficace la consultation et la manipulation des données stockées. ↩️
[^9]: La redirection est une technique permettant de déplacer les visiteurs vers une page Web différente de celle qu'ils demandent,... ↩️
[^10]: Un protocole est un ensemble de règles et de directives pour la communication de données. ↩️
[^11]: La casse des lettres est la distinction entre les lettres qui sont en majuscules et celles qui sont en minuscules. ↩️
[^12]: Procédé de calcul répétitif qui boucle jusqu'à ce qu'une condition particulière soit remplie. ↩️
[^13]: Attribut d'un objet sur lequel on peut effectuer une boucle ou une itération à l'aide d'une boucle. ↩️
[^14]: Méthode par laquelle l'information est convertie en un code secret qui dissimule la véritable signification de l'information.↩️
[^15]: Technique malveillante insérant du code indésirable dans un système, exploitant ses failles, altérant ou volant des données.↩️