Découpez votre site en fichiers réutilisables avec include et require, une structure de projet claire et des constantes centralisées.
Ouvrir cette leçon dans KodokonDès que votre site dépasse deux pages, dupliquer l'en-tête, le pied de page et les fonctions dans chaque fichier devient ingérable. PHP fournit quatre instructions d'inclusion : include, require et leurs variantes include_once / require_once. Toutes insèrent le contenu d'un fichier à l'endroit de l'appel ; la différence tient à la gestion d'erreur et aux inclusions répétées. Les variantes _once gardent la trace des fichiers déjà chargés et ne les incluent qu'une seule fois - indispensable pour les fichiers de fonctions, qu'on ne peut pas redéclarer.
<?php
declare(strict_types=1);
function e(string $value): string
{
return htmlspecialchars($value, ENT_QUOTES);
}
function formatPrice(float $amount): string
{
return number_format($amount, 2, ',', ' ') . ' €';
}Une structure de projet claire vaut mieux que mille commentaires. Convention répandue : public/ contient les pages servies au navigateur (c'est le seul dossier exposé), src/ regroupe configuration et fonctions, templates/ contient les morceaux de pages (header.php, footer.php). Le serveur de développement intégré de PHP se lance en pointant sur public/.
mkdir -p my-site/public my-site/src
mkdir -p my-site/templates
cd my-site
php -S localhost:8000 -t publicLes valeurs fixes du projet (nom du site, chemins, réglages) méritent des constantes plutôt que des variables : impossible de les écraser par accident. const se résout à la compilation, define() à l'exécution ; en pratique, préférez const dans vos fichiers de configuration. Pour les chemins, préfixez toujours par __DIR__, le dossier du fichier courant : vos inclusions fonctionneront quel que soit l'endroit d'où le script est lancé.
<?php
declare(strict_types=1);
const SITE_NAME = 'La Bonne Pizza';
const ITEMS_PER_PAGE = 12;
const UPLOAD_DIR = __DIR__ . '/../public/uploads';
define('BASE_URL', 'http://localhost:8000');Chaque page devient alors un assemblage court : charger la configuration et les fonctions avec require, puis inclure les gabarits autour du contenu spécifique.
<?php
require __DIR__ . '/../src/config.php';
require_once __DIR__ . '/../src/functions.php';
$pageTitle = SITE_NAME . ' - Accueil';
include __DIR__ . '/../templates/header.php';
?>
<main>
<h1><?= e($pageTitle) ?></h1>
<p>Pizza du jour : <?= formatPrice(9.5) ?></p>
</main>
<?php include __DIR__ . '/../templates/footer.php'; ?>