TP5

Techniques mises en oeuvre

  1. Bases de données
  2. pattern DAO
  3. 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 :
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:
CD_entities

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.