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 :

L'nstanciation de mon objet ne fonctionne pas [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut L'nstanciation de mon objet ne fonctionne pas
    Bonsoir,

    J'ai une classe de connexion à ma BD :

    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
    37
    38
    39
    40
    <?php
    class DB extends PDO
    {
        private static $_instance = null;
        private static $_port = '8889';
        private static $_host = 'localhost';
        private static $_user = 'root';
        private static $_password = 'root';
        protected static $_dbname;
     
        public static function getInstance($dbname = 'imaginatiff')
        {
            if (is_null(self::$_instance))
            {
                try
                {
                    self::$_instance = new PDO('mysql:host='.self::$_host.';port='.self::$_port.';dbname='.self::$_dbname, self::$_user, self::$_password);
                    self::$_instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                }
                catch (PDOException $e)
                {
                    throw new Exception('Connection failed or database cannot be selected : ' . $e->getMessage());
                }
                self::$_instance = new self();
            }
            return self::$_instance;
        }
        public function __construct()
        {
     
        }
     
        private function __clone () { }
     
        public function __destruct()
        {
            self::$_instance = null;
        }
    }
    ?>
    Quand j'instancie un objet de type BD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
       //inclut l'auto-loader.
       require("auto_loader/auto_loader.php");
     
       $db = DB::getInstance();
    j'obtiens ceci :

    object(DB)#3 (0)
    {
    }
    Je présume que mon objet n'a pas été créé ?

    Je débute avec la POO, sauriez-vous me dire comment je peux débuger afin de savoir où se trouve le problème svp ?

    Merci d'avance.
    bee

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Tu peux détailler le contenu de ton objet avec la fonction var_dump() :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    require("auto_loader/auto_loader.php");
     
    $db = DB::getInstance();
    var_dump($db);
    ?>

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour ta réponse.

    L'objet vaut ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    object(DB)#3 (0)
    {
    }
    J'ai finalement trouvé la solution :

    Je devais mettre le nom de la bd ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected static $_dbname = 'imaginatiff';
    et j'ai aussi supprimé cette ligne qui me semblait de trop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self::$_instance = new self();
    ligne 24.

    Cela semble fonctionner, l'insertion se fait en BD.

    Par contre, l'objet est toujours vide avec var_dump.

    bee

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/09/2006, 14h50
  2. Réponses: 1
    Dernier message: 30/08/2006, 19h00
  3. [VB.Net/DataReader] Pourquoi mon ExecuteReader ne fonctionne pas ?
    Par emeraudes dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2006, 13h38
  4. Réponses: 14
    Dernier message: 17/08/2006, 10h29
  5. mon trigger ne fonctionne pas !
    Par japi33 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/03/2006, 21h26

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