Aller au contenu

Fichier de config multibase


Sujets conseillés

Posté

Bonjour,

Je viens de me développer une classe Multiton pour mes connexions aux base de données mysql. Et dans mon développement, j'avais l'habitude de faire un fichier "config.inc.php" classique avec des "define" pour le host,db,log,pwd.

Je me suis dis que j'allais faire quelque chose de plus simple dans la lecture pour l'accès multibase en faisant ceci :

$phos['HOST'] = 'Localhost';

$phos['DB'] = 'db1';

$phos['LOG'] = 'user1';

$phos['PWD'] = 'pwd1';

define('CFG_'.$phos['DB'],$phos);

puis pareil pour la base suivante, et ainsi j'ai juste à tester si le tableau est défini pour en passant mon tableau pour mon multiton. mais j'ai eu : "warning : Constants may only evaluate to scalar values"

donc je me suis demandé comment vous aviez l'habitude de faire, si vous "doubliez" à chaque fois les variables en ajoutant un mot de différenciation exemple :

// Fichier de config

define('HOST_DB1','Localhost');

define('HOST_DB2','Localhost');

define('DB_DB1','db1');

define('DB_DB2','db2');

define('LOG_DB1','user1');

define('LOG_DB2','user2');

define('PWD_DB1','pwd1');

define('PWD_DB2','pwd2');

puis dans le fichier d'appel :

--------------------------------------------

include_once 'lib/wosCfg.inc.php';

require_once('lib/fnwos.inc.php'); // Fichier de fonctions du projet

//Appel fonction de récupération des paramètres du projet en base

loadParamFromDB();

--------------------------------------------

fichier de fonctions du projet

function loadParamFromDB();

{

if (defined(HOST_DB2) && defined(DB_DB2) && defined(LOG_DB2) && defined(PWD_DB2))

{

$instMysql = cMysql::getInstance(HOST_DB2,DB_DB2,LOG_DB2,PWD_DB2); // Récupération de l'instance depuis multiton

... etc...

}

}

--------------------------------------------

Ce qui ferais un peut lourd visuellement, donc je voudrais savoir si vous avez une méthode plus simple/propre à me proposer.

Merci.

Posté

Bonjour Conan,

ce que je ferais dans ton cas, ce serait de ne pas passer par des constantes : garde tes tableaux ( en global bien sûr ) , et/ou passe les en paramètre.

par exemple :

$phos['HOST'] = 'Localhost';
$phos['DB'] = 'db1';
$phos['LOG'] = 'user1';
$phos['PWD'] = 'pwd1';

$GLOBALS['TabDB'][$phos['DB']]=$phos;

$phos['HOST'] = 'Localhost';
$phos['DB'] = 'db2';
$phos['LOG'] = 'user2';
$phos['PWD'] = 'pwd2';

$GLOBALS['TabDB'][$phos['DB']]=$phos;

et ensuite, dans ta fonction, tu fais un code de ce style :

function loadParamFromDB();
{
foreach ($GLOBALS['TabDB'] as $db=>$UneDb) {
$instMysql = cMysql::getInstance(UneDb['HOST'],UneDb['DB'],UneDb['LOG'],UneDb['PWD']);
}
}

Posté

Merci !

Je vais regarder ça dès que j'ai un moment, j'ai un gros soucis hardware à résoudre.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...