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 :

[POO] class SQL en variable globale pour de la POO


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut [POO] class SQL en variable globale pour de la POO
    Bonjour,

    J'utilisais jusque là des fonctions natives mysql pour programmer, et je me retrouve face a de nouvelles contraintes depuis que je veux utiliser un class SQL à la place des fonctions natives.

    J'initalise donc au début de chaque page PHP une variable $bdd = new PDO(...) chargée de me connecter a ma BDD.

    Le problème, c'est du coup, mes requetes passent désormais par un $bdd-> et que $bdd doit donc être disponible partout, y compris dans d'autres classes.

    L'idée serait donc de faire dériver toutes les class de mon projet d'une class objet dans laquelle $bdd est disponible, soit par un système de variable global, soit en tant que membre de la class (passé par référence dans le constructeur pour les perfs).

    Cela dit, je me voit mal passer en paramètre $bdd a mon constructeur a chaque new() que je fait, et je ne sais ni comment faire ni si c'est correct en POO d'utiliser des variables globales...

    Bref, quelle est selon vous la bonne méthode pour pouvoir utiliser ce $bdd n'importe où dans le projet comme si c'était quelque chose de natif au langage ?

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 327
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 327
    Billets dans le blog
    17
    Par défaut
    Tu peux faire un singleton
    http://fr.php.net/singleton

  3. #3
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Ok, je viens de parcourir un peu tout ça, et pessimiste que je suis je retient que :

    - on ne peut pas créer de class singleton dérivée d'une autre class...
    - on est donc obligé de définir la class dont on souhaite dérivé comme propriété de la class singleton
    - du coup, on est obligé de reprogrammer toutes les méthodes de la class dont on veut dériver, au moins dynamiquement avec __call
    - après, on se tape des appels de fonctions à rallonge usent le clavier du genre nomclass::nominstance->mafonction() mais ce quelque soit la profondeur du code ?

    j'ai bon ?

    Moi qui trouvait le PHP simple jusque là :p

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 327
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 327
    Billets dans le blog
    17
    Par défaut
    Singleton n'est pas une classe mais un "pattern".
    Exemple basique :

    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
    <?php
        class MyPDO extends PDO
        {
            // Implémentation du singleton
            // ...
     
            private function __construct( )
            {
                // Afin de ne pas retaper à chq fois les paramètres de cnx
                return parent::__construct(DB_DSN, DB_USER, DB_PASSWORD) ;
            }
     
            static public function getInstance( )
            {
                // Implémentation du singleton
                // ...
            }
        }
    ?>
    A l'usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $db = MyPDO::getInstance( ) ;
    // Si la cnx a déjà été établie par le singleton alors elle est simplement retournée à $db
    // Sinon elle est créée, et retournée à $db
    // Tu peux utiliser ttes les méthodes de PDO avec $db

  5. #5
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Bon bon bon, je vais mettre mon déguisement du puriste de la POO et m'y risquer pour voir ce que ça donne...

    Mais je ne cache pas que j'y vais en trainant des pieds et en regardant derrière moi la variable de session que je vais abandonner au profit de cette méthode... J'espère ne pas avoir à le regretter...

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 327
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 327
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par comode Voir le message
    Bon bon bon, je vais mettre mon déguisement du puriste de la POO et m'y risquer pour voir ce que ça donne...

    Mais je ne cache pas que j'y vais en trainant des pieds et en regardant derrière moi la variable de session que je vais abandonner au profit de cette méthode... J'espère ne pas avoir à le regretter...
    J'te mets pas le couteau sous la gorge hein

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant C#]Variable Globale pour deux forms
    Par progfou dans le forum C#
    Réponses: 7
    Dernier message: 20/02/2007, 09h08
  2. variable globale pour griser des boutons de commande
    Par ben5985 dans le forum Access
    Réponses: 5
    Dernier message: 24/11/2006, 11h34
  3. Variable globales pour mon appli
    Par soufir dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/06/2006, 11h51
  4. Classe privée et variables globales
    Par mavina dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 21/04/2006, 15h03
  5. variable globale pour plusieurs Form
    Par ced2004 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/04/2005, 08h50

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