TP noté
2022-2023
Durée : 1h
Mise en place de l'examen
Téléchargez l'archive du sujet, et décompressez-la. Elle contient un répertoire tp-note-tw4b-2022-VOTRELOGIN
dans lequel vous effectuerez votre travail. Renommez-le en remplaçant VOTRELOGIN
par votre login (ça donnera donc par exemple tp-note-tw4b-2022-dupont223
ou tp-note-tw4b-2022-21912345
).
Vous pouvez placer ce répertoire où vous voulez, pas forcément sur votre espace web (on ne corrigera que ce que vous déposerez sur ecampus).
En particulier, vous pouvez laisser le répertoire sur votre compte normal et utiliser le serveur de développement inclus avec PHP de cette façon :
- Ouvrez un terminal dans le répertoire
tp-note-tw4b-2022-LOGIN
que vous avez extrait et renommé - Lancez la commande
php -S localhost:20202 -d display_errors=true
(remplacez 20202 par un autre port si celui-ci ne marche pas…). - Allez à l'URL
http://localhost:20202/
: vous devriez voir le résultat de l'exécution du fichierindex.php
qui est dans ce répertoire. (Il y a des erreurs PHP, c'est normal.)
Attention, les erreurs affichées dans les pages sautent moins aux yeux que sur le serveur, et la stack trace est moins lisible. Cependant, toutes les erreurs PHP sont aussi affichées dans le terminal où vous avez lancé le serveur, et la stack trace y est un peu mieux.. Notez aussi que ce serveur de développement, très basique, ne sait pas afficher d'index des répertoires, comme le fait le serveur Apache utilisé pour votre www-dev.
Important
Vous devez rendre à l'issue de l'examen
une archive zip
contenant (à la racine) votre répertoire tp-note-tw4b-2022-LOGIN
, déposée sur Ecampus dans la zone prévue à cet effet. Le nom de l'archive n'a pas d'importance, mais il est important que l'archive contienne le répertoire demandé (et pas son contenu par exemple).
Faites bien attention à ne pas déposer l'archive initiale, mais bien celle avec votre travail ! Normalement, si vous avez bien renommé le répertoire, il ne devrait pas y avoir de confusion possible.
Exercice
Le répertoire tp-note-tw4b-2022-LOGIN
contient l'architecture d'un site très simple : il s'agit d'un pseudo-forum. On peut le voir en action ici.
Il suit les principes présentés en cours, sauf que la « base de données » est un simple tableau stocké en session (c'est-à-dire que chaque internaute ne voit que ses propres
commentaires ! Ça suffira pour un TP noté…). Au démarrage, le tableau contient deux commentaires (toujours les mêmes).
Une partie du code a été enlevée (des exceptions « not yet implemented » sont lancées à la place) : il manque la méthode de la vue permettant d'afficher le fil des commentaires, et les méthodes du contrôleur et de la vue qui concernent l'ajout d'un nouveau commentaire. NB : rien d'autre n'a été supprimé ! En particulier, vous n'avez a priori pas besoin de modifier le routeur (mais ce n'est pas interdit).
- Regarder les classes fournies et s'assurer de comprendre comment ça marche. (NB : il n'y a pas d'action permettant d'afficher un commentaire seul.)
- Implémenter la méthode
makeListPage
de la vue pour qu'elle affiche la liste des commentaires (optionnel : on la fera s'afficher de bas en haut), ainsi qu'un lien vers la page d'ajout de commentaire. - Faire en sorte que le contrôleur appelle la méthode
makeCommCreationPage
de la vue lorsque l'utilisateur veut ajouter un nouveau commentaire. - Implémenter l'enregistrement d'un nouveau commentaire dans la base. NB : rien n'a été supprimé dans la classe
CommStorageSession
, il ne devrait pas y avoir besoin de la modifier. - Si ce n'est déjà fait, gérer les données invalides : l'auteur ne doit pas être vide, et on obligera chaque commentaire à avoir une longueur minimale de 10 caractères. NB : vous disposez d'une classe
CommBuilder
dont rien n'a été supprimé non plus. - Si ce n'est déjà fait, gérer la redirection après une requête POST, et le feedback associé.
- Si ce n'est déjà fait, faire en sorte que soumettre un commentaire invalide ne remette pas les champs du formulaire à zéro, mais les laisse en l'état.