Backend PHP (BPH) Help

Mini-Projet : CRUD MVC

Étape 0 :

  1. Créez un dossier crud-mvc dans le dossier coda-bph-j10

Architecture des dossiers et fichiers

- assets - styles - css - scss - js - config - autoload.php - services - Router.php - controllers - AbstractController.php - UserController.php - models - User.php - managers - AbstractManager.php - UserManager.php - templates - layout.phtml - users - list.phtml - show.phtml - create.phtml - update.phtml - index.php

La base de données

Créez une base de données coda_bph_crudmvc en utf8_general_ci.

Dedans, vous allez créer une table users:

  • id qui est un int autoincrémenté

  • email qui est un varchar de longueur 255

  • first_name qui est un varchar de longueur 255

  • last_name qui est un varchar de longueur 255

Étape 1 : Mise en place du Routeur

Vous allez utiliser ce que vous avez appris pour mettre en place un routeur. Voici la liste des routes et des méthodes correspondantes :

  • index.php?route=show_user-> la méthode show() du UserController

  • index.php?route=create_user-> la méthode create() du UserController

  • index.php?route=check_create_user-> la méthode checkCreate() du UserController

  • index.php?route=update_user-> la méthode update() du UserController

  • index.php?route=check_update_user-> la méthode checkUpdate() du UserController

  • index.php?route=delete_user-> la méthode delete() du UserController

  • Dans tous les autres cas : la méthode list() du UserController

Pour le moment, vous n'avez pas de controller, du coup dans les accolades de vos conditions, notez simplement en commentaire le nom de controller et de la méthode qui devra être appelée.

En observant la liste des templates que vous avez dû créer à l'étape 0 et en la comparant avec la liste des méthodes du UserController mentionnées ci-dessus, déduisez quelle méthode devra afficher quel template.

Préremplissez vos templates avec le strict minimum, la structure de base d'une page pour le layout avec le require du template contenu dans la variable $route et un titre décrivant le nom de la page pour les autres. Inspirez-vous des consignes de l'exercice sur le Routeur.

Il y a plus de méthodes que de templates, que pouvez-vous en déduire ?

Étape 2

Grâce aux déductions de l'étape précédente, vous allez pouvoir mettre en place le squelette de votre AbstractController et de votre UserController, créez donc les classes et leurs méthodes.

Une fois que c'est fait, vérifiez que vos routes affichent bien le bon template. Comment pourriez-vous vous simplifier ces tests ?

Étape 3

Dans cette étape, je vais vous demander d'utiliser le logiciel de votre choix (canva, Google Draw, MS Paint ...) pour créer un schéma de ce qui se passe lorsque vous appelez l'URL index.php?route=create_user.

Étape 4

Nous avons maintenant un squelette de Controller et un schéma du fonctionnement de la route create_user, nous allons donc tenter d'aller plus loin dans la mise en place de cette route.

Nous allons commencer par créer le modèle qui permet de représenter la table users de notre base de données.

Dans le fichier models/User.php créez une classe User qui correspond à la table users de votre base de données.

Étape 5

Dans cette étape, nous allons gérer la connexion à votre base de données.

Dans le fichier managers/AbstractManager.php, vous allez créer une classe abstraite AbstractManager, elle n'a qu'un seul attribut protected, appelé $db, qui est une instance de la classe PDO (fournie par PHP, rien à require).

Le constructeur de la classe ne prend pas de paramètres, par contre, il initialise son attribut $db avec les informations de connexion à votre base de données.

Étape 6

Dans le fichier managers/UserManager.php, créez une classe UserManager qui hérite de la classe AbstractManager.

Elle n'a pas d'attributs et son constructeur ne fait rien à part appeler le constructeur de sa classe parente.

Elle contient par contre les méthodes publiques nécessaires pour un Manager.

Implémentez ces méthodes en adaptant la situation à la classe User et à la table users de votre base de données.

Étape 7

Maintenant que vous avez mis en place les méthodes de votre UserManager, je vais vous demander de deviner quelle méthode du UserManager sera appelée dans quelle méthode du UserController. Notez sur un fichier les correspondances entre les méthodes de Manager et de Controller.

Étape 8

Maintenant que vous savez qui va appeler qui, nous allons revenir à notre route create_user que nous avions un peu laissée de côté à l'étape 4 pour aller implémenter des choses dont nous aurions besoin.

La route create_user qui correspond donc à la méthode create() du UserController est une route assez simple à gérer, en effet, elle ne génère pas de logique et se contente d'afficher un template.

Commençons par remplir le template qu'elle appelle : templates/users/create.phtml. Ce template va devoir contenir le formulaire qui permet de saisir les informations d'un nouvel utilisateur. Créez ce formulaire HTML dans le template.

Comme tous les formulaires en PHP, il a besoin d'une action et d'une method, la méthode, ça ne change pas : c'est post. Mais à votre avis, laquelle de nos routes sera son action? Mettez-la en place.

Étape 9

Maintenant que vous savez que votre formulaire de création d'utilisateur va appeler la route check_create_user nous allons nous occuper d'elle.

Elle a principalement 3 chose à faire :

  1. Récupérer les données du formulaire pour hydrater une instance de la classe User

  2. Instancier un UserManageret transmettre l'instance fraichement créée à sa méthode create()

  3. Rediriger vers la page de liste des utilisateurs

Implémentez ces trois comportements puis tester le fonctionnement de votre création d'utilisateur (en vérifiant s'il apparait dans votre base de données).

Étape 10

Dans cette étape, je vais vous demander d'utiliser le logiciel de votre choix (canva, Google Draw, MS Paint ...) pour créer un schéma de ce qui se passe lorsque vous appelez l'URL index.php?route=create_user puisque vous soumettez le formulaire. Vous pouvez vous inspirer du schéma de fonctionnement du MVC présent dans le cours.

Étape 11

Maintenant que vous avez vu le processus complet pour la création d'un User, vous allez devoir rédiger vos propres consignes pour le processus d'affichage de la liste des utilisateurs.

Écrivez ces consignes dans un fichier prenom-etape-11.md (en remplaçant le mot prénom par votre prénom) mais ne les implémentez pas.

Étape 12

Implémentez les consignes que vous avez rédigées à l'étape 11.

Étape 13

Pour pouvoir implémenter les routes qui nous permettent d'afficher le détail d'un utilisateur, de le modifier ou de le supprimer, nous allons devoir ajouter un comportement supplémentaire à nos URLs. Essayez de deviner l'information qui pourrait nous manquer.

Étape 14

Complétez les comportements qui nous manquent :

  • afficher le détail d'un utilisateur

  • modifier un utilisateur

  • supprimer un utilisateur

04 December 2025