Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-05-2008 23:03:16

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

question sur le Zend_config_ini...

Salut la compagnie smile
Je découvre votre site et ces forums pour la première fois et suis assez enthousiaste de l'aide que je vais pouvoir y trouver quand à ma prise en main du ZF... smile

J'ai develloper un CMS tous en php relativement complexe avec des solutions AJAX, frameworks JS, ...

mon objectif actuelle est de le passer sous ZF afin de disposer de ce dernier sur base d'un MVC bien propre.
Bien que j'ai lu divers tuto sur l'approche MVC du ZF, j'ai encore enormement de mal à concevoir de façon global le passage de ce CMS au MVC...

ma première question concerne le Zend_Config_ini et cette façon de stocker des infos en ini.
voici ce que j'ai fait:

Code:

// au front controller
$config = new Zend_Config_ini("../../../securePath/ZFconfig_monsite.ini", 'localhost');

pour ce qui est de mon systeme j'utilise 3 db (systeme, perso, et site). Voici donc mon ini:

Code:

; Données de configuration du site de production
[production]
client.tld                        = fr
client.ref_client                 = mon_domaine
client.id_client                  = 1

db.adapter                        = pdo_mysql
db.params.host                 = mysql.hebergeur.fr
db.params.username         = user
db.params.password          = ********
db.params.dbname             = systeme_db

; Données de configuration du site en local héritant du site de production
; et surchargeant les clés nécessaires
[localhost : production]
client.tld                          = loc

db.host                            = localhost
db.username                   = root
db.password                    = ********

1°) pouvez vous me dire comment faire pour avoir la possibilité de traiter sur différentes db (passer de l'une à l'autre)

2°)Mon soucis est que je souhaiterai avoir dans le ZFconfig_monsite.ini plusieurs nom de db ainsi que les different nom de table associer à chacunes de ces db... Pouvez vous me conseiller sur ce fait et sur une syntaxe à adopter pour inscrire toutes ces infos dans ce ini?

merci d'avance pour votre aide wink
N'hesiter pas à me faire part de vos méthodes de travaille afin que j vois un peu plus loin que le bout de mon nez...

Dernière modification par BeRoots (15-05-2008 23:04:41)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#2 16-05-2008 09:34:20

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: question sur le Zend_config_ini...

tu peut faire des sections dans ton fichier ini(comme tu en as fait actuellement)

Par exemple :

Code:

[production]
base=A
pass=A

[dev]
base=B
pass=B

et donc pour charger par exemple la  version de dev, tu fait ce que tu as fait:

Code:

$config = new Zend_Config_ini("../../../securePath/ZFconfig_monsite.ini", 'dev');

Ca te permet de définir autant de config dont tu as besoin...et donc tu peut définir tout tes params de db là dedans...

Pour mon projet, vu qu'il doit tourner sur un peut tout les SGBD, j'ai meme mi un parametre "DbAdapter", que j'utilise dans mon script de connexion à la base


J'espere avoir répondu à ta question wink

Dernière modification par stf (16-05-2008 09:35:46)

Hors ligne

 

#3 16-05-2008 11:13:35

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: question sur le Zend_config_ini...

meme chose que stf.
astuce :
Pour éviter d'oublier de switcher l'environnement lors d'une mise en recette ou productrion,
Je place des variable d'environnement sur chaque machine, et le code charge la section du config.ini suivant cette valeur.
du coup rien a faire lorsque je livre du code, ca evite de faire une mise en prod avec l'appli qui se connecte a la base de recette (ça c'est du vécu).

Hors ligne

 

#4 16-05-2008 11:59:36

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: question sur le Zend_config_ini...

Merci à vous deux mais je vous colle un Hors sujet. veuillez relire l'énoncé et reprendre vos copie lol

Nan en fait c'est exactement ce que je fait mais regarder bien les deux question numérotes wink
en gros je veut savoir comment switcher entre plusieurs DB et aussi si i est judicieux de mettre mes mon de table/db dans ce ini...

merci d'avance pour vos réponses wink


wink Non au language SMS sur nos forums wink

Hors ligne

 

#5 16-05-2008 12:08:52

ichevc02
Membre
Date d'inscription: 25-07-2007
Messages: 127

Re: question sur le Zend_config_ini...

Désolé, j'ai lu un peu vite.

Bon je tente la session de rattrapage :

si j'ai bien compris tu as trois sources de données.

Moi je gererai ca plutot dans le code:

j'ecrirais une sorte d'adapterManager qui renverrai le bon db adapteur suivant le contexte.
en gros getAdapteur($nomDemaTable) et ton Manager renvoie le bon $db suivant la table demandée.
ton Manager lirait dans ton config.ini quel adapteur il doit fournir suivant la table damandée.

Code:

[db1]
db.host = monHost
db.login = monLogin
.......
dbTable = MaTable

[db2]

db.host = monHost
db.login = monLogin
.......
dbTable = MaTable2

getAdapteur("MaTable2") renvoie le $db cree a partir des infos de la section DB2.


C'est juste une idée.

Je suis peut-etre recallé sur ce coup :-(

Dernière modification par ichevc02 (16-05-2008 12:14:45)

Hors ligne

 

#6 16-05-2008 18:33:39

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: question sur le Zend_config_ini...

Hmmm, l'idée semble bonne. Mais ce n'était que l'examen blanc bien sur lol

En faite pour un Adpteur oui et non, j'ai peut être manquer de précision dans l'énoncé ?
En faite mon système me définit 4 global au bootstrap (front controller) donc les composante sont situées en 3 DB.
Mon objectif serai de me connecter successivement à ces 3 DB pour chaque appel au bootstap (chaque action), ou afin de voir si possible de sauver ceci au registre durant tout le temps de la visite de l'internaute (donnée sensible donc pas en session et donc voir si sécurité suffisante au registry)...

En gros de suite, on a donc 3 chose importante:
- la charge system pour ces 4 requêtes mysql à chaque appel au bootstrap (sauf si registry)
- la notion de sécurité (une global le temps de l'exécution ou en registry)
- la méthode à utiliser sachant que l'on doit successivement faire appel à 3 db différentes sur un même serveur)

les données retourner sont essentiels donc pour le moment je verrai plutôt cette solutions:
- un enchainement au bootstrap de 4 requêtes sur les 3 DB avec valeur mise en global à chaque appel de page du projet

ma question sera donc:
1°) comment faire pour avoir une connexion successive à 3 base de données differentes sur le même serveur ?
Doit je faire ceci 3 fois ???

Code:

// Mise en place de la BDD
$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);

Dernière modification par BeRoots (16-05-2008 19:12:37)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#7 18-05-2008 15:40:03

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: question sur le Zend_config_ini...

Oups  smile


Je pense que oui, c'est la seule solution de créer 3 connexions à la base et d'en disposer à loisir wink

Hors ligne

 

#8 03-09-2008 11:49:11

andras
Membre
Date d'inscription: 26-09-2007
Messages: 11

Re: question sur le Zend_config_ini...

Bonjour,
j'ai eu le même besoin (initialiser 2 connexions sur 2 BDD différentes). La réponse n'ayant pas été donnée ci-dessus et comme j'ai pas mal galéré avant de la trouver, je la poste ici à toutes fins utiles.

Mon erreur initiale a été de vouloir déclarer les 2 configurations dans des sections différentes du fichier config.ini et de tenter de les charger successivement comme cela :

Code:

$config1 = new Zend_Config_Ini('../application/config.ini', 'principal');
$db = Zend_Db::factory($config1->db);

$config2 = new Zend_Config_Ini('../application/config.ini', 'second');
$db2 = Zend_Db::factory($config2->db);

Ca ne marche pas ainsi.

Il faut simplement déclarer les 2 configurations (ou plus) dans la même section du config.ini et donner des noms différents aux 2 objets "db" dans ce fichier. Par exemple :

Code:

[general]
db.adapter = MYSQLI
db.params.host = server1
db.params.username = user1
db.params.password = pwd1
db.params.dbname = db1

db2.adapter = MYSQLI
db2.params.host = server2
db2.params.username = user2
db2.params.password = pwd2
db2.params.dbname = db2

et récupérer les 2 configs :

Code:

$config = new Zend_Config_Ini('../application/config.ini', 'general');

$db = Zend_Db::factory($config->db);
Zend_Registry::set('db', $db);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$db2 = Zend_Db::factory($config->db2);
Zend_Registry::set('db2', $db2);

// pour selectioner une connexion dans l'application :
$db2 = Zend_Registry::get('db2');

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