Bonjour,

Voila je ne sais pas à quoi sert UserDAO.

J'ai un exercice en php, plus précisément en POO. Dans mon exercice, Objet UserDAO.

Objet UserDAO
Cet objet est chargé de « travailler » avec une table users

  • Un attribut pour le nom de la table
  • Une méthode getAllUsers() pour récupérer tous les utilisateurs de la table sous forme d'un
    tableau d'objets
  • Etend (extends) la classe Model « je suis ton père !! »

Après quelques recherchent j'ai trouvé que le DAO a pour but de transformer les données contenues dans une BDD en objet et inversement.

Pouvez-vous m'éclairer sur cet exercice, car je n'ai pas rien trouvé sur le net (peut-être mal cherché). Je ne cherche pas une solution toute prête, juste comment ça marche, comment le mettre en place ?

Merci d'avance pour vos réponses.

4 réponses


SLK
Réponse acceptée

Salut,

la POO utilise souvent (toujours ?) le pattern "MVC".

Dans ce pattern, ce sont les "Model" qui interragissent avec la base de données.

Tu aura la class "Model", qui sera abstraite, et dont tous les autres modèles hériterons.

Et pour chaque table présente dans ta base de données, tu aura un model correspondant.
Par exemple, si tu as une table "users" dans ta base de données, alors tu écrira une classe "UserModel", que tu fera hériter de la classe abstraite "Model".

Il se trouve que dans ton exercice,
on a choisi de ne pas appeler cette classe "userModel", mais plutôt "userDAO" à la place,
le nom change, mais pas l'idée derrière.
(certains l'appellent "UserTable", d'autres l'appellent encore différemment... Le nom n'a pas d'importance).
L'idée reste la même, c'est cette classe qui va faire TOUTES les opérations dont ton site aura besoin en base de données, mais SEULEMENT pour ce qui concerne la table "users" de ta base de données, et aucune autre table.
Pour les autres tables, on fera la même chose, ont écrira pour chacune, une classe rien que pour elle : "XxxxxModel", ou en l'occurence ici : "XxxxxDAO". ^^

du coup :

class UserDAO extends Model
{
    protected $table = 'users';

    public function getAllUsers()
    {
        // à faire
    }

    // futures autres fonctions
}

Et dans la classe "Model",
il y aura les petites fonctions "classique", qui seront utilisées par toutes tes classes "XxxxxDAO", du style :
find($id), qui retourne les données de la ligne dont l'id est $id
delete($id), qui supprime la ligne dont l'id est $id
...

Bonsoir.
Tu as par exemple ceci : Objet d'accès aux données.

Merci, mais ton exemple est en Java, je cherche en PHP

Super, je te remercie pour cette réponse, ultra complète. Merci beaucoup