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

PhpMyObject Discussion :

[Bogue] Petit problème avecPMO_MySGBD::factory()


Sujet :

PhpMyObject

  1. #1
    Chef de projet PhpMyObject
    Avatar de Laplix
    Profil pro
    Inscrit en
    juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : Belgique

    Informations forums :
    Inscription : juin 2007
    Messages : 66
    Points : 210
    Points
    210
    Par défaut [Bogue] Petit problème avecPMO_MySGBD::factory()
    En testant le driver pdo j'ai fait une erreur de frapper dans ma configuration (j'en fais souvent des erreurs de frappe ). J'ai tapé pdi au lieu de pdo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $config = PMO_MyConfig::factory();
    $config->set('db.driver', 'pdi');
    $config->set('db.pdodriver', 'mysql');
    et ça a fonctionné sans problème même si le driver est invalide. Le problème provient de PMO_MySGBD::factory() qui utilise PDO par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    switch($authdb['driver']){
       case 'sqlite':
    
       (...)
             
       default:
             require_once("PMO_sgbd_pdo.php");
             self::$INSTANCE = new Pmo_sgbd_pdo($object);
             if(!isset($object))
                self::$INSTANCE->connectSgbd($authdb);
             break;
    }
    Comme PDO est le driver par défaut, on peut mettre n'importe quoi dans $authdb['driver']. Si le pdodriver est valide, ça passe. Je suggère ce changement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    switch($authdb['driver']){
          (...)
    
       case 'pdo':
             require_once("PMO_sgbd_pdo.php");
             self::$INSTANCE = new Pmo_sgbd_pdo($object);
             if(!isset($object))
                self::$INSTANCE->connectSgbd($authdb);
             break;
    
       default:
             throw new Exception("Error: ".$authdb['driver']." is not a PMO supported driver");
             break;
    De cette façon, un exception va être générée si le driver est invalide.

    HTH
    Regarde au-delà de l'horizon. L'univers est là-bas. Tes rêves aussi.

    Laplix
    http://pmo.developpez.com/

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    janvier 2003
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 181
    Points : 160
    Points
    160
    Par défaut
    Très bonne remarque, ajouté directement dans la version du subv
    PhpMyObject teck leader
    http://pmo.developpez.com

    La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.

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

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 21h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 22h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 21h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 13h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 19h55

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