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 :

Constante en paramètre d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut Constante en paramètre d'une fonction
    Salut,

    J'ai une classe singleton dans laquelle j'utilise une constante.
    Le problème c'est que cette constante ne semble pas prise en charge dans la méthode de création.

    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
    class DBManager {
    	
    	private static $_instance;
    	
    	protected function construct() {}
    	
    	public static function getConnection() {
    		
    		if (!isset(self::$_instance)) {
    			try {
    				self::$_instance = new PDO(DB_PDO_PARAMS);
    				self::$_instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			}
    			catch (Exception $e) {
    				trigger_error($e->getMessage(), E_USER_ERROR);
    				self::$_instance->rollBack();
    			}
    		}
    		
    		return self::$_instance;
    	}
    }
    Me renvoit:
    Fatal error: could not find driver in (...)
    Voilà la constante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    define('XAO_DB_PDO_PARAMS', "'mysql:host=127.0.0.1;dbname=test_development', 'root', 'pass', array(PDO::ATTR_PERSISTENT => true)");
    Si j'utilise les paramètres directement au lieu de la constante, alors tout fonctionne correctement...

    Une idée ?

    EDIT: Titre plus explicite.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Une piste possible : si la classe PDO nécessite plusieurs arguments dans son constructeur, alors l'appel est incorrect puisque les virgules ne seront pas interprétées comme différents paramètres puisqu'à l'intérieur de ta chaîne :

    "'mysql:host=127.0.0.1;dbname=test_development', 'root', 'pass', array(PDO::ATTR_PERSISTENT => true)" est considéré comme un seul argument.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 201
    Points : 108
    Points
    108
    Par défaut
    En effet, le problème venait bien de là.

    J'te remercie !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/12/2005, 12h33
  2. Evaluations des paramètres d'une fonction
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 06/10/2005, 09h46
  3. paramètres pour une fonction
    Par bul dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2005, 07h49
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. Passer en paramètre d'une fonction (...)
    Par Captain_JS dans le forum C++
    Réponses: 5
    Dernier message: 03/11/2004, 07h18

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