Cet exercice a été réalisé lors d'un cours a la Normandie Web School
Mise en pratique du développement en TDD.
Principes et utilisation d'un DAL.
Loi 1 : Vous devez écrire un test qui échoue avant de pouvoir écrire le code de production correspondant.
Loi 2 : Vous devez écrire une seule assertion à la fois, qui fait échouer le test ou qui échoue à la compilation.
Loi 3 : Vous devez écrire le minimum de code de production pour que l'assertion du test actuellement en échec soit satisfaite.
- Écrire un seul test qui décrit une partie du problème à résoudre
- Vérifier que le test échoue, autrement dit qu'il est valide, c'est-à-dire que le code se rapportant à ce test n'existe pas
- Écrire juste assez de code pour que le test réussisse
- Vérifier que le test passe, ainsi que les autres tests existants
- Puis remanier le code, c'est-à-dire l'améliorer sans en altérer le comportement
- GOTO 1.
La DAL permet de faire abstraction du support de données. En théorie, peu importe le type de données: base SQL, fichiers XML, fichiers texte, le DAL permet de manipuler ces données.
Le but du DAO est de tranformer les données gérées par le DAL en objets facilement manipulable. Il crée ainsi un objet en faisant correspondre les attributs de cet objet avec les données lues par le DAL.
On parle aussi de manager.
L'ORM a pour but de restituer les liens entre les tables (dans le cas d'une BDD) en créant les même liens entre les objets créés par le DAO. Et inversement. Il va typiquement se préoccuper de matérialiser les clés étrangères par des dépendances entre objets.
git clone https://github.com/leahpar/nws-tdd-dal.git <mon-projet>
cd <mon-projet>
Créer une base de données (MySQL, PostgreSQL, SQLite...).
Éditer le fichier config.php
.
Gérer des Trucs !
- Créer des attributs et accesseurs d'une entité
Truc
. - Compléter la classe
TrucDAO
pour pouvoir ajouter, modifier, supprimer, lister, chercher... des trucs.
- Ajouter un test dans
tdd.php
- Tester :
php tdd.php
- Implémenter la fonction
- Tester :
php tdd.php
- Nettoyer et commenter le code
- GOTO 1
PDO : PHP Data Objects
Utilisation d'un design pattern singleton (wikipedia) pour la connexion à la base de données
Gérer la structure des tables dans le DAO (create, truncate, drop, if exists).
Implémenter une couche ORM : plusieurs entités avec des relations entre elles.
- DAL/DBAL
- ORM
- Types avancés
- DQL
- Cache
- Annotations
- Café
- ...