TP5
Techniques mises en oeuvre
- Bases de données
- pattern DAO
- PDO
Expression des besoins
YAHP doit permettre la visualisation web des tickets existants.
Le système de persistance des tickets dans un fichier plat
s'avère peu pratique :
- on devrait gérer les accès
concurrents,
- on ne dispose pas d'un langage de requêtes
permettant par exemple de filtrer les tickets affichés.
L'utilisation d'une base de données relationnelle s'impose
donc.
Cette nouvelle évolution est purement technique et non fonctionnelle. Il n'y a pas de nouveaux cas d'utilisation.
Analyse
On se doute qu'on sera amené à manipuler de
nouvelles entités (dite "métiers")
représentées dans le diagramme de classe ci dessous:

Travail demandé
Initialisation de la base de données
A l'aide de phpMyAdmin (et éventuellement de ce tutoriel), créer une nouvelle base
de données MySQL appelée yahd,
y insérer le schéma schema.sql.
(Note : pour simplifier on déclare la date sous
forme
d'une chaine de caractères (VARCHAR) plutôt que
sous forme
d'une DATE et on range le nom de l'application directement dans le
champ applicationName).
Classes DAO
Renommer le fichier TicketDAO.class.php en
FileTicketDAO.class.php (y renommer la classe définie).
Créer le fichier TicketDAO.class.php pour y insérer la définition fournie de la
classe désormais abstraite TicketDAO (dont les méthodes ne
contiennent pas de code).
Classe PDOTicketDAO
On va utiliser l'extension PDO (et plus précisément les méthodes PDOStatement::execute() et PDOStatement::fetch())
pour accéder à la base de donnés MySQL.
Créer le
fichier pdo.conf.php
fourni qui définit les paramètres de connexion à la base de
données.
Compléter le
fichier PDOTicketDAO.class.php
dont un squelette est fourni.
On pourra mettre au point (tester) cette classe en utilisant en ligne de
commande le script fourni
ticketMenu.app.php de la façon suivante :
$ php ticketMenu.app.php
Usage : php ticketMenu.app.php command
where command is insert, findAll, findById id,
deleteAll, ...
$ php ticketMenu.app.php deleteAll
$ php ticketMenu.app.php insert
$ php ticketMenu.app.php findAll
Array
(
[0] => Ticket Object
(
[ticketID:private] => 5
[applicationName:private] => Paye
[login:private] => unittest
[priority:private] => 3
Classe AppService
Modifier la classe AppService dans
AppService.class.php en
conséquence (noter que les modifications à
apporter sont minimales grâce à l'utilisation du
pattern
DAO).
Tests unitaires
Valider les développements en exécutant les tests unitaires de ce TP jusqu'à l'obtention de la barre verte.