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

Langage PHP Discussion :

interaction entre classes


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut interaction entre classes
    Bonjour à tous,

    Voilà, j'avoue, je débute complètement avec la POO (jusqu'à présent je ne faisais que du "procédural"), donc, si ma question vous semble "débile", soyez indulgents

    voilà, au début de mon script j'appelle deux fichiers de classes ("produit" et "sql") avec "require"...
    je crée un objet "sql" (appelons le "$connexionSQL") pour obtenir une connexion à ma base SQL.
    je crée ensuite un objet "produit" (appelons le "$monProduit")

    Et c'est là que je bloque. Dans ma classe "Produit", j'ai une fonction qui va récupérer les infos du produit dans la bdd, et pour cela, je voudrais utiliser la connexion déjà instanciée (mon objet $connexionSQL)

    En clair (ou presque) :
    - je déclare mes deux objets
    - comment utiliser le premier dans une méthode du second

    Je suis sûr que c'est un truc tout bête mais bon ....

    merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    On gère ce genre de cas par une injection de dépendance.
    Un exemple très basique, la classe SQL se contentant de contenir une instance de PDO:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    class SQL 
    { 
     protected $connexionSQL;
    // basique: se contente de retourner une connexion
      public function __construct()
      {
      //récupère le nom d'utilisateur, le mot de passe, etc ... et
       $this->connexionSQL = new PDO(".....");
      }
     
      public function getConnexion()
      {
       return $this->connexionSQL;
      }
    }
     
    class Produit 
    {
      protected $connexionSQL;
      protected $id;
      public function __construct($id)
      {
        $this->id = $id; 
       }
      public function setSql($connexionSQL)
      { 
        $this->connexionSQL = $connexionSQL; 
        return $this;
      }
      public function getInfoFromBdd()
      {
       $stmt = $connexionSQL->prepare("SELECT * FROM produit WHERE produit.id =:id");
       $stmt->bindParam(':id', $this->id, PDO:PARAM_INT);
       $stmt->execute();
       return $stmt->fetchAll();
      }
    Et maintenant, pour utiliser le tout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql= new SQL();
    $connexionSQL = $sql->getConnexion();
    $produit = new Produit(1);
     
    //et maintenant, injection de la connexion dans le produit
    $produit->setSql($connexionSQL)->getInfoFromBdd();

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour la réponse rapide vais étudier ça dès que possible

Discussions similaires

  1. Interaction entre classes. Utilisation du "self"
    Par santaflam dans le forum Général Python
    Réponses: 11
    Dernier message: 01/09/2013, 00h11
  2. Interactions entre les classes ?
    Par bigwade dans le forum Android
    Réponses: 8
    Dernier message: 08/12/2012, 14h24
  3. [Débutant] Interactions entre classes
    Par ledany dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2011, 10h27
  4. [MySQL] POO - interaction entre les classes (tuto PHPUnit)
    Par hornetbzz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/02/2010, 10h30
  5. [Language]Interaction entre class
    Par LordBob dans le forum Langage
    Réponses: 10
    Dernier message: 14/12/2005, 10h14

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