Kodokon kodokon.com

Organiser son code : include, structure, constantes

Découpez votre site en fichiers réutilisables avec include et require, une structure de projet claire et des constantes centralisées.

7 min · 3 questions

Ouvrir cette leçon dans Kodokon

Dè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
<?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, ',', ' ') . ' €';
}
src/functions.php : des aides réutilisables dans tout le site.

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/.

BASH
mkdir -p my-site/public my-site/src
mkdir -p my-site/templates
cd my-site
php -S localhost:8000 -t public
Création de la structure puis lancement du serveur de développement.

Les 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
<?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');
src/config.php : toute la configuration au même endroit.

Chaque page devient alors un assemblage court : charger la configuration et les fonctions avec require, puis inclure les gabarits autour du contenu spécifique.

HTML
<?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'; ?>
public/index.php : la page n'est plus qu'un assemblage.

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Quelle est la différence entre include et require ?
    • include est plus rapide que require
    • require ne fonctionne qu'avec des chemins absolus
    • require arrête le script par une erreur fatale si le fichier manque, include émet un avertissement et continue
    • Aucune, ce sont deux alias
  2. À quoi sert require_once ?
    • À garantir qu'un fichier n'est inclus qu'une seule fois, même si plusieurs fichiers le demandent
    • À inclure un fichier uniquement en production
    • À inclure un fichier sans exécuter son code PHP
  3. Pourquoi préfixer les chemins d'inclusion par __DIR__ ?
    • C'est obligatoire depuis PHP 8
    • Le chemin devient relatif au fichier courant et ne dépend plus du dossier d'où le script est lancé
    • Cela active un cache des fichiers inclus