Déclarer des variables et tester leurs valeurs
Objectif : Déclarer des variables représentant l’état simple du carnet et afficher un message adapté à leurs valeurs.
Une page de carnet ne doit pas afficher le même contenu dans toutes les situations. Par exemple, vous pouvez vouloir indiquer si le carnet est ouvert ou fermé, ou afficher un message différent selon le nombre de contacts disponibles. Dans cette leçon, vous allez utiliser des variables et des tests pour adapter la page à ces valeurs.
Vous avez déjà créé index.php avec un document HTML complet et un titre dynamique échappé. Vous allez faire évoluer ce fichier en ajoutant quelques valeurs propres au carnet, puis en décidant quel message présenter selon ces valeurs.
Déclarer des variables pour le carnet
Une variable porte un nom et contient une valeur que votre script peut utiliser. En PHP, son nom commence par le caractère $ ; par convention, vous choisissez ici des noms français qui décrivent leur rôle. Une affectation comme $titre = 'Carnet de contacts'; associe une chaîne de caractères à la variable $titre.
Les valeurs utilisées dans cette leçon sont des types scalaires : une chaîne de caractères, un entier, un nombre décimal ou un booléen. Une chaîne convient à un nom ou à un message ; un entier peut représenter un nombre de contacts ; un booléen vaut true ou false et convient à un état simple. PHP détermine le type à partir de la valeur affectée, et vous pouvez le vérifier avec var_dump() pendant le développement.
Comparer les valeurs et choisir un affichage
Les opérateurs de comparaison produisent un résultat booléen. L’opérateur === teste si deux valeurs sont égales et de même type ; !== teste si elles sont différentes. Vous pouvez aussi utiliser >, <, >= et <= pour comparer des nombres. Pour une égalité stricte, préférez === à == : PHP ne convertit ainsi pas implicitement les valeurs comparées.
La structure if exécute un bloc lorsque sa condition est vraie. Une branche else fournit le cas contraire. Vous pouvez donc tester le nombre de contacts avant de choisir un message, ou vérifier un booléen avant d’afficher un état. Dans le code qui suit, les valeurs servent seulement à illustrer l’affichage : elles ne représentent pas encore des contacts enregistrés.
<?php
declare(strict_types=1);
$titre = 'Carnet de contacts';
$carnetOuvert = true;
$nombreContacts = 3;
$versionPhp = 8.3;
if ($nombreContacts === 0) {
$messageContacts = 'Aucun contact à afficher.';
} else {
$messageContacts = 'Le carnet contient ' . $nombreContacts . ' contacts.';
}
if ($carnetOuvert === true) {
$etatCarnet = 'Le carnet est ouvert.';
} else {
$etatCarnet = 'Le carnet est fermé.';
}
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($titre, ENT_QUOTES, 'UTF-8') ?></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="carnet-page">
<header class="carnet-entete">
<h1><?= htmlspecialchars($titre, ENT_QUOTES, 'UTF-8') ?></h1>
</header>
<main class="carnet-principal">
<section aria-labelledby="titre-etat">
<h2 id="titre-etat">État du carnet</h2>
<p class="carnet-message"><?= htmlspecialchars($etatCarnet, ENT_QUOTES, 'UTF-8') ?></p>
<p class="carnet-message"><?= htmlspecialchars($messageContacts, ENT_QUOTES, 'UTF-8') ?></p>
<p>Version PHP du projet : <?= htmlspecialchars((string) $versionPhp, ENT_QUOTES, 'UTF-8') ?></p>
</section>
</main>
<footer class="carnet-pied">
<p>Carnet de contacts privé</p>
</footer>
</div>
</body>
</html>État du carnet
Le carnet est ouvert.
Le carnet contient 3 contacts.
Version PHP du projet : 8.3Enregistrez ce contenu dans index.php, puis ouvrez http://localhost:8000/index.php avec le serveur de développement déjà utilisé dans le projet. La page affiche le titre du carnet, son état, le message adapté au nombre de contacts et la version indiquée. Vous pouvez aussi lancer php index.php dans un terminal pour vérifier que le fichier s’exécute ; cette commande n’affiche pas le rendu HTML comme le navigateur.
Les expressions entre parenthèses après if sont les conditions. Comme $nombreContacts vaut actuellement 3, le test $nombreContacts === 0 est faux et le bloc else affecte le message de trois contacts à $messageContacts. Si vous affectez 0 à $nombreContacts, le premier message sera choisi à la place ; vous n’avez pas besoin de modifier le HTML pour obtenir ce résultat.
Le test sur $carnetOuvert montre comment une variable booléenne permet de choisir entre deux états. Pour tester un booléen, vous pouvez aussi écrire if ($carnetOuvert) ; la comparaison explicite avec true rend toutefois le test plus visible quand vous débutez. Le texte affiché reste une chaîne et les valeurs utilisées dans la page sont échappées avec htmlspecialchars(), comme vous l’avez appris dans la leçon précédente.
La version PHP est ici un nombre décimal, tandis que $nombreContacts est un entier. L’expression (string) $versionPhp convertit le nombre en chaîne pour la fonction d’échappement, qui attend un texte. Vous pouvez observer les types exacts avec var_dump($carnetOuvert, $nombreContacts, $versionPhp); pendant vos essais, mais retirez cet affichage de diagnostic lorsque vous n’en avez plus besoin.
À retenir
- Une variable PHP commence par `$` et contient une valeur comme une chaîne, un entier, un nombre décimal ou un booléen.
- Les opérateurs de comparaison donnent un résultat vrai ou faux ; utilisez notamment `===` pour comparer sans conversion implicite de type.
- `if` et `else` vous permettent de sélectionner un résultat selon une condition.
- Échappez les valeurs avant de les insérer dans du HTML, comme dans la leçon précédente.