Leçon 1 / 20

Définir les responsabilités des couches

25 min PHP 8 — architecture, tests et sécurité Gratuit

Objectif : Répartir les opérations du carnet entre présentation, application et accès aux données.

Quand une application grandit, une même action peut finir par lire des paramètres HTTP, appliquer des règles et exécuter une requête SQL au même endroit. Ce mélange rend les changements risqués : modifier l’affichage peut casser l’accès aux données, et une règle métier devient difficile à vérifier isolément. Vous allez répartir ces responsabilités en trois couches et suivre le trajet d’une requête du carnet.

Trois couches, trois responsabilités

La couche de présentation reçoit les requêtes HTTP et produit les réponses. Dans le carnet, elle lit par exemple les données envoyées avec un formulaire, choisit l’action correspondant à une URL et transmet le résultat au rendu. Le contrôleur CarnetControleur appartient à cette couche ; le fichier templates/carnet.php participe à l’affichage.

La couche applicative coordonne le travail nécessaire pour répondre à une demande et porte les règles liées aux opérations du carnet. Par exemple, le service ContactService peut recevoir une demande d’ajout et décider quelles opérations métier effectuer. Il ne devrait pas lire directement $_POST, construire une page HTML ou ouvrir une connexion PDO : ces tâches appartiennent à d’autres responsabilités.

La couche d’accès aux données lit et enregistre les informations persistées. Dans le projet, ContactDepot est chargé des contacts stockés en base, tandis que database/schema.sql décrit leur structure. Le dépôt ne décide pas comment afficher un contact ni comment répondre à une requête HTTP : il fournit les opérations de persistance nécessaires aux couches supérieures.

Suivre une requête du début à la fin

Prenez l’exemple d’une personne authentifiée qui demande la liste de ses contacts. Le serveur reçoit une requête pour la page d’accueil ; le contrôleur coordonne la réponse, le service demande les contacts nécessaires et le dépôt les récupère. Le résultat remonte ensuite vers la présentation, qui le transmet au rendu HTML.

  1. Présentation : recevoir la requête et déterminer la réponse HTTP à préparer.
  2. Application : coordonner l’opération demandée et appliquer les règles du carnet.
  3. Accès aux données : récupérer ou enregistrer les contacts dans la base.
  4. Présentation : mettre en forme le résultat et renvoyer la réponse.

Le trajet inverse ne signifie pas que chaque couche connaît tous les détails des autres. Le contrôleur doit déclencher une opération applicative, mais ne devrait pas contenir le SQL ; le dépôt doit manipuler les données, mais ne devrait pas décider du contenu d’une page. Cette séparation suit le principe de responsabilité unique : une partie du code est plus facile à comprendre et à faire évoluer quand elle a un rôle clairement délimité.

Classer les opérations du carnet

Pour la recherche, la présentation récupère le terme transmis dans l’URL et demande le traitement approprié. La couche applicative coordonne la recherche, puis l’accès aux données récupère les résultats. Enfin, la présentation échappe les données destinées à la page avant de les rendre : l’échappement concerne le contexte d’affichage, pas la logique de recherche ni la persistance.

OpérationPrésentationApplicationAccès aux données
Consulter les contactsLire la demande et rendre la pageCoordonner la consultationRécupérer les contacts
Ajouter un contactRecevoir le formulaire et produire la réponseAppliquer les règles d’ajoutEnregistrer le contact
Supprimer un contactRecevoir la demande et choisir la réponse HTTPCoordonner la suppressionRetirer le contact stocké

Cette répartition se reflète dans les fichiers déjà prévus : public/index.php est le point d’entrée HTTP, src/Controleur/CarnetControleur.php coordonne les réponses, les services se trouvent sous src/Service/, et le dépôt sous src/Depot/. Le rendu et le gabarit restent séparés dans src/Vue/rendu.php et templates/carnet.php. À ce stade, retenez surtout le rôle de chaque zone ; les contrats entre services et dépôts seront étudiés dans une prochaine leçon.

À retenir

  • La présentation reçoit les requêtes HTTP et prépare les réponses.
  • La couche applicative coordonne les opérations et applique les règles du carnet.
  • La couche d’accès aux données lit et enregistre les contacts.
  • Une responsabilité clairement délimitée réduit le mélange entre HTTP, métier et persistance.
  • Le résultat remonte des données vers la présentation, qui construit la réponse.

Dans la prochaine leçon, vous modéliserez les contacts et les règles métier que la couche applicative devra faire respecter.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.