IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

POO et base de données incompréhension


Sujet :

PHP & Base de données

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut POO et base de données incompréhension
    Bonsoir,

    J'aimerais, s'il est possible, vous demandez un peu d'aide. J'apprends depuis plusieurs semaines maintenant la programmation orienté objet, et j'en ai compris le principe. Cependant, je suis encore dans le flou concernant l'interaction de la programmation orienté objet (PHP) avec les bases de données dans une architecture MVC.

    Par exemple, prenons la classe ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
     
         class Membre {
     
              private $firstname;
              private $lastname;
     
              public function __construct($db_instance) { ... }
     
              public function get_firstname() { ... }
              public function set_firstname($value) {
                   $this->firstname = $value;
              }
     
         }
     
    ?>
    Imaginons que chaque membre, comme le montre le code ci-dessus, possède un prénom et un nom. Mon problème de compréhension vient du faîte que je ne sais absolument pas où mettre l'insertion dans la base de données, étant donné que d'après ce que j'ai compris, les getters et les setters ne sont pas supposer contenir du code propre à l'interaction avec la base de données. Est-ce que je me trompes ?

    Et imaginons maintenant que j'ai une méthode public "afficherMembreParId()" et "afficherTousLesMembres()" , est-ce juste de l'intégrer dans la même classe ?

    Mon incompréhension réside dans le faite que la classe Membre, comme son nom l'indique, instancie des membres (John Doe, Mark Robins, etc.) mais si j'utilise une méthode comme "afficherTousLesMembres()", il ne s'agirait pas d'instancier 10'000 membres au sein même d'un objet déjà instancier ?

    Vous l'aurez compris, après plusieurs semaines intense de lecture et de pratique, je sens la fatigue prendre le dessus, et ne comprend même plus la logique de base de la programmation orienté objet.

    Je vous remercie d'avance de votre aide, et espère que mon poste soit un minimum compréhensible.

    Bonne soirée

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    En effet les getters et les setters ne doivent rien faire d'autre que la lecture ou la définition des attributs.

    Dans ta classe Membre, si tu veux sauvegarder les attributs d'instance en base, tu auras forcément une méthode du genre public function save() ou public function persist() qui va interagir avec la base de données et qui renverra par exemple un true ou une erreur.

    De même tu peux très bien avoir une fonction d'extraction du genre public function load($id) ou passer un id à la création... Tout dépend de la souplesse que tu veux avoir.

    Enfin avoir une classe Membre dans laquelle tu listerais tous les membres est une erreur de conception. En faisant ainsi cette fonction ne serait plus en accord avec la sémantique conceptuelle de Membre qui ne représente qu'un seul et unique membre.
    Généralement, pour les listes on utilise Membres avec un s pour signifier que c'est une collection. C'est une convention assez répandue et une des raisons pour lesquelles on manipule les pluriels avec précaution.

    Et pour finir, ta classe Membre ne devra pas avoir trop de responsabilités. Par exemple elle ne devra que renvoyer des données brutes ou les définir mais en aucun cas s'occuper de l'affichage. L'affichage des informations est un autre métier qui aura ses propres classes.

Discussions similaires

  1. [POO] associer base de données et classe
    Par floriann dans le forum Langage
    Réponses: 14
    Dernier message: 15/01/2011, 13h19
  2. [POO] Connexion à une base de données
    Par merlubreizh dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2008, 10h13
  3. [POO] Classe de connexion à une base de données
    Par iwf-fr dans le forum Langage
    Réponses: 3
    Dernier message: 13/11/2007, 13h55
  4. Réponses: 1
    Dernier message: 29/10/2006, 05h04
  5. POO et bases de données
    Par szdavid dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 24/01/2006, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo