Ternaire
Dans certains cas, on peut vouloir afficher une variable qui n’existe pas forcément.
Pour éviter que PHP renvoie une erreur, on peut utiliser un opérateur ternaire afin de lui attribuer une valeur par défaut.
Nous appliquons ce principe dans le fichier head.php, ainsi qu’une boucle pour inclure toutes les feuilles de style listées dans le tableau $page_styles.
Méthode : head.php
Nous modifions le fichier head.php .
<head>
<!-- Définition de la base pour les liens relatifs --><base href="= $page_base ?? './' ">
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<!-- Titre dynamique de la page --><title>= $page_title ?? 'Accueil' </title>
<link rel="stylesheet" href="css/style.css">
<!-- Feuilles de styles spécifiques à la page --> foreach (($page_styles ?? []) as $style) {
echo " <link rel='stylesheet' href='css/{$style}.css'>\n";
}
</head>
Les variables $page_title et $page_styles peuvent être supprimer du fichier de la page d'accueil index.php.
La variable tableau spage_styles peut contenir plusieurs valeurs, ce qui permet d’ajouter plusieurs feuilles de style. Si elle n’est pas définie, on lui attribue un tableau vide par défaut.
Nous modifions la variable $page_styles dans le fichier utilisateur/index.php :
$page_styles = ['utilisateur', 'card'];
Méthode : css/utilisateur.css
/* =============================== Liste de figures (utilisateurs) =============================== */.utilisateur-list {list-style: none;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 1.5rem;
padding: 0;
margin: 0;
}
Méthode : css/card.css
/* =============================== Figures cartes .card =============================== */.card {display: grid;
grid-template-rows: auto 1fr;
background: #fff;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
transition: transform 0.2s, box-shadow 0.2s;
}
.card:hover {
transform: translateY(-5px);
box-shadow: 0 4px 10px rgb(0 0 0 / 10%);
}
.card img {
width: 100%;
display: block;
}
.card figcaption {
align-items: center;
justify-content: center;
padding: 0.6rem;
font-size: 0.9rem;
text-align: center;
background: #f5f5f5;
border-top: 1px solid #ddd;
}