Objet PHP, Variable et generation automatique

Objet PHP, Variable et generation automatique - PHP - Programmation

Marsh Posté le 14-04-2003 à 11:01:13    

Bonjour,
 
 j'aimerai instancier des classes µPHP en fonction de la preference du systeme.
 
 Je m'explique :
J'ai 3 Bases possibles : mysql, Oracle, PostgreSQL
 
 J'ai 3 Classes (DB_MYSQL, DB_POSTGRE et DB_ORACLE) qui herite d'une classe abstraite IDataBase
 
 Dans un fichier de preference nous pouvons specifier 1 de ces 3 bases (en cas d'erreur c POSTGRE qui est pris par defaut)
 
 Je recupere une chaine de caractere de la sorte : "MYSQL", "POSTGRE" ou "ORACLE" en fonction du fichier de Pref
 
 Maintenant pour instancier la bonne classe je fais :
$DB_PREF = "DB_".$VARPREF."()"    // $varpref est egal a ORACLE ou POSTGRE ou MYSQL
 
 
 Quand je fais un echo $DB_PREF j'obtiens par exemple "DB_POSTGRE()"
 
Helas quand je fais un $DB_OBJECT = &new $DB_PREF ça me chie dans la colle alors que en dure tout vas bien (il me dit  : Cannot instantiate non-existent class: db_postgre() in /srv/www/htdocs/directory/System/system.php on line 368 )
 
 Pourtant en dure ça passe : $DB_OBJECT = &new DB_POSTGRE() ;
 
QQn pourrais m'aider a trouver une solution pour generer une chaine de caracteres automatiquement et exploitable pour l'instancier en tant que classe ?

Reply

Marsh Posté le 14-04-2003 à 11:01:13   

Reply

Marsh Posté le 14-04-2003 à 11:05:33    

eval ("$obj=&new ".$MaClasse." ();" );
 
Sinon va voir du coté du pattern abstract factory


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 14-04-2003 à 11:18:27    

kadreg a écrit :

eval ("$obj=&new ".$MaClasse." ();" );
 
Sinon va voir du coté du pattern abstract factory


 
Merci mais ça me fais ça :
 
Parse error: parse error, unexpected '=' in /srv/www/htdocs/directory/System/system.php(368) : eval()'d code on line 1
 
Quand je fais ça :
eval ("$SYSTEM_DB=&new ".$DB_CLASS." ();" );
 

Reply

Marsh Posté le 14-04-2003 à 11:22:36    

samuelp a écrit :


eval ("$SYSTEM_DB=&new ".$DB_CLASS." ();" );


 
$SYSTEM_DB doit être substitué. Essaye avec des simples quotes


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 14-04-2003 à 11:27:59    

kadreg a écrit :


 
$SYSTEM_DB doit être substitué. Essaye avec des simples quotes  


 
En fait faut mettre un \ devant le $ et ça fonctionne :)
 
Merci  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed