Giter Club home page Giter Club logo

php-dal-dao's Introduction

Cet exercice a été réalisé lors d'un cours a la Normandie Web School

Implémentation d'un DAL/DAO en TDD.

Mise en pratique du développement en TDD.

Principes et utilisation d'un DAL.

TDD - Test Driven Development

Wikipedia

Principes de base

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.

En pratique

  1. Écrire un seul test qui décrit une partie du problème à résoudre
  2. 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
  3. Écrire juste assez de code pour que le test réussisse
  4. Vérifier que le test passe, ainsi que les autres tests existants
  5. Puis remanier le code, c'est-à-dire l'améliorer sans en altérer le comportement
  6. GOTO 1.

DAL, DAO & Cie

TUTO (openclassrooms)

doc

DAL : Data Access Layer

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. ​

DAO : Data Access Object

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.

ORM : Object Relation Maping

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.

TP

Installation

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.

Objectif

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.

Coder

  1. Ajouter un test dans tdd.php
  2. Tester : php tdd.php
  3. Implémenter la fonction
  4. Tester : php tdd.php
  5. Nettoyer et commenter le code
  6. GOTO 1

Documentation PDO

PDO : PHP Data Objects

Connexion

Requêtes

Pour aller plus loin

Singleton

Utilisation d'un design pattern singleton (wikipedia) pour la connexion à la base de données

Structure tables

Gérer la structure des tables dans le DAO (create, truncate, drop, if exists).

ORM

Implémenter une couche ORM : plusieurs entités avec des relations entre elles.

L'intérêt de Doctrine

  • DAL/DBAL
  • ORM
  • Types avancés
  • DQL
  • Cache
  • Annotations
  • Café
  • ...

php-dal-dao's People

Contributors

pierrethiollent avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.