OVH Cloud OVH Cloud

declaration de class conditionnelles

2 réponses
Avatar
Cornelius
Salut à tous.

J'aimerais délcarer une classe mais celle-ci doit être subordonnée à certain
paramètres.
exemple:

class u_sql {
if ($is_base == "odbc")
var $toto ...
else {
var $tata;
function uf_...
}
}

Ya-t-il plus simple et plus rapide ? (comme le #define en C/C++)

2 réponses

Avatar
Cornelius
Voilà ma solution mais comme il y a toujours mieux...

<?PHP
/*
Objet de connexion avec la base de données
Regroupe toutes les fonction SQL nécessaires au portail
*/
define ("ERR_PAGE", "connection_error.php");
if (PHP_OS == "Linux")
define("DB_PROTOCOL", "sybase");
else
define("DB_PROTOCOL", "ODBC");

switch(DB_PROTOCOL) {
case "sybase":
include("u_sql_sybase.class.php");
break;
case "ODBC":
include("u_sql_odbc.class.php");
break;
default:
echo "Type de base de données inconnue";
exit( );
break;
}
?>

"Cornelius" a écrit dans le message de
news:3f7c25ee$0$10421$
Salut à tous.

J'aimerais délcarer une classe mais celle-ci doit être subordonnée à
certain

paramètres.
exemple:

class u_sql {
if ($is_base == "odbc")
var $toto ...
else {
var $tata;
function uf_...
}
}

Ya-t-il plus simple et plus rapide ? (comme le #define en C/C++)


Avatar
Damien Metzler
Salut à tous.

J'aimerais délcarer une classe mais celle-ci doit être subordonnée à certain
paramètres.
exemple:

class u_sql {
if ($is_base == "odbc")
var $toto ...
else {
var $tata;
function uf_...
}
}

Ya-t-il plus simple et plus rapide ? (comme le #define en C/C++)


Et à quoi ça te sert de faire une classe si tu n'utilise pas les
propriétés de la POO

Exemple :
Tu fais une classe abstraite u_sql (interface dans php5)
Tu fais des classes dérivées qui implémentent cette interface:
u_sqlodbc, u_sqloracle etc...

Et pour les construire tu utilise le design pattern Factory :

class SQLFactory {
procedure CreateSQL($type) {
switch($type) {
'odbc' : return new u_sqlodbc();
'oracle' : return new u_sqloracle();
}
}

$sql=SQLFactory::CreateSQL('odbc');


C'est codé sur le tas, donc faudrait vérifier que ça marche ;)
Mais dans l'idée c'est ça, il me semble que le package DB de PEAR
implémente le pattern Factory.

De ce que j'ai vu de PHP5, ça devrait mieux marcher avec (notamment pour
le passage des objets par référence).
Sinon tu peux toujours mettre tes classes dans différents fichiers et
faire un include dans la factory