Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-10-2012 13:12:23

Zacharias
Membre
Date d'inscription: 03-10-2012
Messages: 11

Comment récuperer la configuration de la BDD?

Bonjour,

Depuis une Classe externe j'ai besoin de faire appel à la base de donnée,
seulement je n'arrive pas à récupérer la config de celle-ci  déclarée dans le global.php

global.php

return array(
    'db' => array(
        'driver' => 'Pdo',
        'dsn' => 'mysql:dbname=name;hostname=localhost',
        'username' => 'root',
        'password' => '',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
    ),   
);

cette config est bien récupérable depuis le module.php d'un module via le service manager.
cependant je ne sait pas comment faire pour la récupérer depuis une classe perso créée
ou même depuis un Helper de vue.

merci de votre aide smile

Hors ligne

 

#2 11-10-2012 14:09:52

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Comment récuperer la configuration de la BDD?

Tu peux injecter la connexion ou le service manager comme tu veux depuis le module.php.

Hors ligne

 

#3 11-10-2012 15:48:59

Zacharias
Membre
Date d'inscription: 03-10-2012
Messages: 11

Re: Comment récuperer la configuration de la BDD?

en fait j'arrive déja à recuperer l'adapteur dans un controller depuis le SM
mais je ne sait pas comment faire depuis une classe externe

Hors ligne

 

#4 14-10-2012 17:27:07

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Comment récuperer la configuration de la BDD?

J'appelle cette classe par une Factory de Singletons.
Pour le chargement de la conf, j'ai différentes confs en fonction de l'environnement (déclaré dans Apache --  dev, recette, production).

Adapte-la à ton cas et tes besoins.


Code:

[lang=php]
namespace Tonnamespace;

use Zend\Db\Adapter\Adapter as Zend_Adapter;


class Adapter
{

    private $adapter;
    private static $confDir = '/../../config/autoload';


    public function __construct()
    {
        $env = getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production';
        $dir = __DIR__ . self::$confDir . '/database.' . $env . '.php';
        $conf = include ($dir);
        $conf = $conf['db'];
        $this->adapter = new Zend_Adapter(array(
                    'driver' => $conf['driver'],
                    'dsn' => $conf['dsn'],
                    'user' => $conf['user'],
                    'pass' => $conf['pass'],
                    'driver_options' => $conf['driver_options']
                ));

    }


    public function beginTransaction()
    {
        return $this->adapter->getDriver()->getConnection()->beginTransaction();

    }


    public function query($sql)
    {
        return $this->adapter->query($sql);

    }


    public function getAdapter()
    {
        return $this->adapter;

    }


    public function commit()
    {
        return $this->adapter->getDriver()->getConnection()->commit();

    }


    public function rollback()
    {
        return $this->adapter->getDriver()->getConnection()->rollBack();

    }


    /**
     * quote value
     * 
     * @param string|integer $v
     * @return string
     */
    public function quoteValue($v)
    {
        return $this->adapter->platform->quoteValue($v);

    }


    /**
     * quote value
     * 
     * @param string|integer $v
     * @return string
     */
    public function quoteIdentifier($i)
    {
        return $this->adapter->platform->quoteIdentifier($i);

    }

}

Dernière modification par Bouks (14-10-2012 17:29:12)


22914720

Hors ligne

 

#5 15-10-2012 10:18:04

Zacharias
Membre
Date d'inscription: 03-10-2012
Messages: 11

Re: Comment récuperer la configuration de la BDD?

Merci,

C'est très sympa de ta part, j'avais réussi depuis en récupérant le SM à la déclaration d'un Helper depuis le module.php.
Mais je vais étudier ta méthode qui me parait intéressante.

Merci à toi Bouks,

Hors ligne

 

#6 15-10-2012 10:28:36

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Comment récuperer la configuration de la BDD?

C'est moche de nommer ces classes avec des "_". C'est contre les bonnes pratiques !

Hors ligne

 

#7 15-10-2012 13:38:49

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Comment récuperer la configuration de la BDD?

Ouh que je suis vilain. Avoir mis un _ dans un alias.

Je vais me flageller pendant dix minutes pour payer ma forfaiture.


22914720

Hors ligne

 

#8 15-10-2012 14:15:07

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Comment récuperer la configuration de la BDD?

Tu fais comme tu veux, je fais juste la remarque pas la peine de monter sur tes grands airs ... Le fait est que ce forum est là pour préconiser les bonnes pratiques du ZendFramework 2 d'autant plus que les "_" font généralement référence au ZF1. Ca ne critique en rien ton travail juste pour informer la personne à qui tu proposes une solution de faire attention à cette information.

Information qui est présente ici : http://framework.zend.com/wiki/display/ … aceAliases

Hors ligne

 

#9 15-10-2012 16:10:09

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Comment récuperer la configuration de la BDD?

J'espère que c'était sur le ton de l'humour (dans ce cas ça manque d'un petit smiley big_smile ) parce que sinon t'es vraiment très suceptible sad

Hors ligne

 

#10 15-10-2012 21:30:11

Bouks
Membre
Lieu: Paris
Date d'inscription: 31-08-2012
Messages: 241

Re: Comment récuperer la configuration de la BDD?

En parlant de bonnes pratiques.

Dans zf2 :

- le prependstylesheet (ou append...) prend le conditionnal en string

alors que

- le prependFile (...) prend le conditionnal en array


Dans PHP c'est pareil avec les signatures de fonctions dans un ordre, puis dans un autre...

alors un _ au lieu d'un -, on est plus à ça près. smile

Parfois j'ai envie de mettre des coups de boule à Rasmus Lerdorf.
Non.
Je vais plutôt le kidnapper et l'enfermer dans une cave pour qu'il corrige tout ce bazar.


22914720

Hors ligne

 

#11 15-10-2012 22:30:13

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Comment récuperer la configuration de la BDD?

Salut Bouks,

Effectivement, pas besoin de t'exciter, la remaruqe d'Orkin était pertinente (d'autant plus que si tu contribues un jour à Zend Framework 2, plusieurs scripts sont automatiqueemnt lancés lorsque tu soumets ta correction, et notamment sur les conventions du framework ;-)).

Maintenant, il est fort propable que certains arguments ne soient pas toujours dans le même ordre, et effectivement c'est dommage. On ne peut pas le changer actuellement dans ZF 2 car cela entraînerait des problèmes de compatibilités, mais n'hésite pas à ouvrir une issue sur GitHub afin que ça soit corrigé pour Zend Framework 3 smile.

Hors ligne

 

#12 24-11-2012 17:32:58

mtcocktail
Membre
Date d'inscription: 20-09-2012
Messages: 71

Re: Comment récuperer la configuration de la BDD?

Par rapport à la demande initial j'ai un peu la même question.

Dans un controller on récupére un Service avec :

Code:

   $sm = $this->getServiceLocator();
   $this->monService = $sm->get('monService');

Est-ce que c'est possible de faire la même chose dans une classe métier ?

Je pense que c'est ce que demandé à la base Zacharias, récupérer l'adaptater à sa base avec :

Code:

$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages