Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-08-2009 14:33:28

rollie-t
Nouveau membre
Date d'inscription: 13-08-2009
Messages: 1

[Zend_Application][1.9] méthodes _init*

Bonjour,

j'utilise le fichier de config pour initialiser ma ressource "db":

Code:

resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "baz"
resources.db.params.password = ""
resources.db.params.dbname = "bar"
resources.db.isDefaultTableAdapter = true

Tout fonctionne.

cependant, si je définis dans mon Bootstrap une méthode _initDb:

Code:

    protected function _initDb ()
    {
        $db = $this->getPluginResource('db')->getDbAdapter();
        $db->query('SET NAMES "UTF8"');
       // pas de return
    }

la ligne de conf "resources.db.isDefaultTableAdapter = true" ne semble plus être prise en compte.

Si je nomme ma méthode _initFoo au lieu de _initDb, le problème ne se pose plus.

Ce comportement est-il intentionnel selon vous ?
Si oui, je ne comprends pas pourquoi seulement certains éléments de la config sont overridés.

Merci d'avance,

Rollie-T

Dernière modification par Mr.MoOx (14-08-2009 09:10:17)

Hors ligne

 

#2 13-08-2009 14:44:26

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [Zend_Application][1.9] méthodes _init*

En fait, la ressource "db" est une ressource déjà présente dans Zend Framework.
En écrivant une méthode _initDb tu crées ta propre ressources,  tu écrases ce db existant. C'est pourquoi il est préférable de créer une méthode avec un autre nom. j'ai eu moi aussi ce problème  roll
C'est aussi pourquoi tous les éléments ne sont pas overridés, ne sont overridés que ceux qui existent déjà


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#3 14-08-2009 10:13:19

Eureka
Membre
Date d'inscription: 18-07-2009
Messages: 81

Re: [Zend_Application][1.9] méthodes _init*

N'est-il pas intéressant, dans un tel cas, de surcharger la classe Zend_Application_Resource_Db et de redéfinir les méthodes getDbAdapter() ou init() pour ajouter le "SET NAMES" dans la foulée de la création de l'objet (qui bénéficie dès lors des informations du fichier de configuration) ?

Sinon pour ajouter un complément d'informations, les méthodes _init*() se déclenchant avant les plugins de ressources il faut, si l'on veut bénéficier du plugin de ressource 'db' existant, opter pour ce type d'approche je pense :

Code:

    protected function _initDbMore() {
        // Permet l'instanciation de l'adapter via le plugin.
        // Sans cette ligne la suivante ramènerait la resource sans l'objet instancié
        $this->bootstrap('db');
        $db = $this->getPluginResource('db');
    }

Dernière modification par Eureka (14-08-2009 10:22:10)

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