Les contenus du cours BRE03 Web Dev Course © 2024 par Mari Doucet sont sous licence CC BY-NC-SA 4.0
Le PHP est un langage de programmation qui a de multiples usages. Aujourd’hui il est majoritairement utilisé pour la création de sites internet dynamiques, il peut toujours être utilisé comme un langage de script dans le terminal.
Dans le cadre du développement de sites internet, PHP est utilisé comme langage backend.
Dans le cadre du développement web le code backend est celui qui est exécuté côté serveur (Lien du cours sur la relation client / serveur). Il s’occupe de réceptionner les demandes utilisateurs, d’aller chercher les données dans une base de données ou via une API.
Dans le cas spécifique de PHP (ce n’est pas le cas de tous les langages backend), il peut également s’occuper de générer le HTML des pages avec des informations dynamiques (issues de la base de données ou d’une API).
Le PHP peut soit être présent et injecté dans un fichier HTML soit il peut être isolé dans un fichier.
Dans tous les cas, le code PHP se trouve dans un fichier .php
compris entre les balises PHP :
fichier.php
<?php
// mon code php
?>
Pour déclarer une variable en PHP, pas besoin de mot clé, par contre le nom d’une variable est toujours précédé d’un $
:
$message = "Hello"; // la variable $message contient Hello
$age = 42; // la variable $age contient 42
Même chose quand vous voulez manipuler une variable, le $
est toujours là :
$nb1 = 35;
$nb2 = 7;
$sum = $nb2 + $nb1; // $sum contient 42
Vous verrez parfois une syntaxe du type &$variable
. Il s’agit d’une référence. Vous n’aurez pas à les utiliser et le cours ne les utilisera pas.
Il s’agit d’un héritage des langages qui manipulent manuellement la mémoire, comme le C++ ou le C où elles sont très utilisées. Or, PHP est codé en C et en faisait un usage plus répandu dans les premières versions du langage.
Une référence stocke l’adresse d’une variable dans la mémoire et non pas le contenu de cette variable, du coup cela permet de garder une version à jour du contenu d’une variable même s’il a été modifié ailleurs :
$message = "Hello"; // $message contient Hello
$reference = &$message; // $reference contient Hello
$message = "Hello World";
// $reference à qui je n'ai pas touché contient maintenant Hello World
Il existe deux façons de déclarer des chaînes de caractères en PHP :
$message = "Hello !";
$message = 'Hello !';
La différence entre les doubles quotes ""
et les simples quotes ''
c’est au niveau de la concaténation qu’elle se passe.
En PHP l’opérateur de concaténation est le .
(pour rappel, c’est le +
en JavaScript) :
$message = 'Hello'; // $message contient Hello
$message = 'Hello '.'World!'; // $message contient Hello World!
Pour la concaténation, on utilise donc les simples quotes : ''
Comme en JavaScript, vous pouvez composer vos chaînes de caractère en y injectant directement des variables :
$name = "Hugues"; // $name contient Hugues
$message = "Hello $name !"; // $massage contient Hello Hugues !
Si vous devez utiliser quelque chose de plus complexe qu’une variable (par exemple le retour d’une fonction) la syntaxe change un peu :
$name = "HUGUES"; // $name contient HUGUES
$message = "Hello {strtolower($name)} !"; // $message contient Hello hugues !
Lorsque l’on manipule des chaines de caractères avec de l’injection de variables, on utilise les doubles quotes : ""
.
PHP est un langage plus typé que ne l’est JavaScript, une des différences notables, c’est qu’il existe deux types différents pour représenter les nombres entiers et les nombres décimaux.
💡 Rappel de maths : un nombre entier est un nombre sans virgule, un nombre décimal est un nombre avec virgule.
int
(abbréviation d’integer) représente un nombre entier.
$nb = 42; // c'est un int
float
(en anglais informatique la virgule est appelée floating point) représente un nombre décimal.
$nb = 4.2; // c'est un float
Le principe ne change pas par rapport à JavaScript : il vaut true
ou false
.
Le type s’appelle bool
.
Les tableaux existent également en PHP. Comme en JavaScript, ils fonctionnent sur un système $tableau[key] = $value
et sont numérotés en commençant par 0.
$numbers = [23, 45, 18];
$animals = ["Cat", "Dog", "Rabbit"];
En PHP, la clé d’un tableau n’est pas nécessairement un nombre, on peut par exemple utiliser des chaînes de caractères. On parle dans ce cas-là de tableaux associatifs.
$user = [
"firstName" => "Hugues",
"lastName" => "Froger"
];
$firstName = $user["firstName"]; // $firstName contient Hugues
Qui dit langage typé dit avoir parfois besoin de faire basculer une variable d’un type à un autre, on appelle ça une conversion de type (cast en anglais). La syntaxe pour convertir un type en un autre est la même pour tous les types dits primitifs (int, float, bool, string) :
$string = (string) 42; // '42'
$int = (int) '42'; // 42
$float = (float) '4.2'; // 4.2
$bool = (bool) 1; // true
Pour afficher une variable de type primitif, vous pouvez utiliser echo $variable
:
$user = [
"firstName" => "Hugues",
"lastName" => "Froger"
];
$firstName = $user["firstName"];
echo $firstName; // affichera Hugues
echo $user["lastName"]; // affichera Froger
Lien des consignes des exercices sur les variables et les types
Les opérateurs de comparaisons suivants sont les mêmes qu’en JavaScript :
===
!==
>
<
>=
<=
Les conditions aussi fonctionnent de la même façon en PHP :
if($age > 65)
{
echo "Senior";
}
else if($age >= 18 && $age <= 65)
{
echo "Adulte";
}
else
{
echo "Enfant";
}
Pour connaitre la longueur d’un tableau en PHP, il faut utiliser la fonction count()
.
La syntaxe des boucles while
est sensiblement la même qu’en JavaScript :
$animals = ["Cat", "Dog", "Rabbit"];
$i = 0;
while($i < count($animals))
{
echo " {$animals[$i]} <br>";
$i++;
}
La boucle for
ne change pas non plus :
$animals = ["Cat", "Dog", "Rabbit"];
for($i = 0; $i < count($animals); $i++)
{
echo " {$animals[$i]} <br>";
}
Une boucle qui n’a pas vraiment d’équivalence en JavaScript, c’est la boucle foreach
. Dans sa version simple, sa syntaxe ressemble à celle des boucles for(let element of list)
.
$animals = ["Cat", "Dog", "Rabbit"];
foreach($animals as $animal)
{
echo "$animal <br>";
}
Il existe une syntaxe qui permet de récupérer la clé en plus de la valeur :
$animals = ["Cat", "Dog", "Rabbit"];
foreach($animals as $key => $animal)
{
echo "Animal numéro $key : $animal <br>";
}
Lien des consignes des exercices sur les boucles et les conditions
Déclarer une fonction en PHP ça ressemble beaucoup à ce que vous connaissez déjà :
function add($nb1, $nb2)
{
return $nb1 + $nb2;
}
Ça techniquement ça ne plantera pas en PHP mais…
PHP est un langage typé, vous allez donc devoir préciser le type des paramètres et du retour de votre fonction :
function add(int $nb1, int $nb2) : int
{
return $nb1 + $nb2;
}
Quand une fonction ne retourne rien, elle a le type de retour void
:
function printSum(int $nb1, int $nb2) : void
{
echo $nb1 + $nb2;
}
En PHP, on peut également avoir des paramètres par défaut :
function computeVat(int $price, float $vat = 1.2) : float
{
return $price * $vat;
}
Votre fonction peut parfois renvoyer soit quelque chose, soit null
vous devez aussi le préciser :
function divide(float $nb1, float $nb2) : ? float
{
if($nb2 === 0)
{
return null;
}
else
{
return $nb1 / $nb2;
}
}
Pour utiliser une fonction ça ne change pas :
function add(int $nb1, int $nb2) : int
{
return $nb1 + $nb2;
}
add(5, 2);
Le PHP sert également à dynamiser le code HTML, c’est-à-dire que vous allez générer un HTML différent avec des structures de contrôle (boucles, conditions) et dynamique en fonction des informations contenues dans vos variables.
<?php
$name = "Hugues";
?>
<header>
<h1>Bonjour <?= $name ?></h1>
</header>
Ici, on injecte la variable dans le HTML et le <h1>
affichera “Bonjour Hugues”.
💡
<?= $name ?>
est l’équivalent d’écrire<?php echo $name; ?>
<?php
$grade = 11;
?>
<?php if($grade > 12) { ?>
<p class="green"><?= $grade ?></p>
<?php } else if($grade > 9) { ?>
<p class="orange"><?= $grade ?></p>
<?php } else { ?>
<p class="red"><?= $grade ?></p>
<?php } ?>
<?php
$ingredients = ["Salade", "Tomate", "Oignon"];
?>
<ul>
<?php foreach($ingredients as $ingredient) { ?>
<li><?= $ingredient ?></li>
<?php } ?>
</ul>
Lien des consignes des exercices d’affichage