Chapitre 33 : Organisation du code

Structurez vos projets PHP comme un pro avec une organisation claire et maintenable

1. Pourquoi organiser son code ?

Un projet PHP bien organisé est plus facile à maintenir, à tester et à faire évoluer. Une bonne structure permet aussi de travailler en équipe sans confusion.

3. Séparation des responsabilités

  • Fichiers publics : tout ce qui est accessible via le navigateur
  • Fichiers de logique : classes, contrôleurs, gestion de la base
  • Templates : uniquement le HTML (pas de logique PHP ici)
  • Configuration : DB, clés API, options globales

4. Chargement automatique (Autoload)

Utilisez Composer pour autoloader vos classes :

// composer.json
"autoload": {
  "psr-4": {
    "App\\": "src/"
  }
}

Puis générez l'autoload :

composer dump-autoload

5. Gestion des configurations avec .env

Utilisez une bibliothèque comme vlucas/phpdotenv pour stocker les variables sensibles :

// .env
DB_HOST=localhost
DB_USER=root
DB_PASS=secret
// Utilisation en PHP
echo getenv('DB_USER');

6. Exercice pratique : Réorganisez un projet PHP

🎯 Objectif : Repartir d'un petit projet existant (avec index.php, classes et vues) et le structurer proprement.

Consignes :

  • Créez les dossiers : public, src, templates, config
  • Déplacez les fichiers aux bons endroits (index.php → public, classes → src, etc.)
  • Ajoutez un fichier composer.json avec l'autoload
  • Ajoutez un fichier .env et chargez-le

Bonus :

  • Configurez un fichier router.php pour gérer les URLs
  • Ajoutez un système de layout réutilisable pour les templates
Conseil : Cet exercice vous aidera à appliquer une architecture claire et modulaire dans vos projets PHP.

7. Résumé

  • ✅ Un bon projet PHP est divisé en zones claires : public, src, vues, config
  • ✅ L'autoload avec Composer permet de charger les classes automatiquement
  • ✅ Les fichiers .env permettent de garder les informations sensibles hors du code

Une bonne organisation du code est essentielle pour évoluer vers des applications professionnelles robustes.