Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 26 févr. 2008 à 18:24
Hello,
POO et switch, où est la contradiction ? :)
Le switch est juste plus propre et lisible que plein de isset à la suite. Et sûrement plus rapide quand tu as pleiiiiiiiiin de isset vu que tu peux utiliser break, mais sinon...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 févr. 2008 à 19:26
Hello,
moi je ne vois surtout pas le rapport entre les deux...? isset() vérifie si une variable a été définie. switch applique un comportement suivant le résultat d'une expression ou d'une variable. C'est totalement différent. Et avant d'utiliser un switch() sur une variable, il faut s'assurer qu'elle existe (isset()).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 févr. 2008 à 20:53
Moui, vu son exemple, suis pas sûr moi :-)
Globalement, si ta variable n'a qu'une seule valeur possible (et c'est le cas pour un bouton submit), il vaut mieux faire :
if(isset($maVar) && $maVar === 'valeur_attendue')
qu'un switch.
Un switch() est là pour tester différentes valeurs possibles et adopter un comportement spécifique à chacune de ces valeurs.
Quant à utiliser le switch() dans de la POO, je ne vois pas pourquoi ce serait contre-indiqué. Tout dépend de l'utilisation que l'on en a : dans certains cas, switch est plus performant, dans d'autres, if ... elseif le sera plus. Mais pour un seul if()...autant conserver if() qui ne sera pas plus lent que switch et fera gagner quelques lignes de code.
// Fonction pour les possesseurs
$db_table = POSSESSEURS;
$find = 'nom_possesseur'; $liste_possesseurs $fonctions_generales->possesseurs($base_de_donnees, $find, $db_table, $params array());
// Appel du fichier modele
$TBS->LoadTemplate('../../modeles/bd.html');
$TBS->MergeBlock('liste_series', 'array', 'series');
$TBS->MergeBlock('liste_possesseurs', 'array', 'liste_possesseurs');
break;
}
// action en cas de clic sur le bouton ajouter pour ajouter une BD
switch ($_POST['ajouter']) {
case $enregistrer_bd:
$serie_bd = mysql_real_escape_string($_POST['serie_bd']);
$titre_bd = mysql_real_escape_string($_POST['titre_bd']);
$numero_bd = mysql_real_escape_string($_POST['numero_bd']);
$possesseur = mysql_real_escape_string($_POST['le_possesseur']); if ($serie_bd '' or $titre_bd '' or $numero_bd == '' or $possesseur == '') {
echo $erreur_champs_vides_bd;
}
else {
// Fonction pour l'id de la serie de BD
$db_table = SERIES_BD;
$find = 'id_series_bd'; $result $base_de_donnees->select($find, $params array('where' => "series_bd = '" . $serie_bd . "'"), $db_table);
$id_serie = mysql_result($result,0,('id_series_bd'));
// Fonction pour l'id du possesseur de BD
$db_table = POSSESSEURS;
$find = 'id_possesseurs'; $result $base_de_donnees->select($find, $params array('where' => "nom_possesseur = '" . $possesseur . "'"), $db_table);
$id_possesseur = mysql_result($result,0,('id_possesseurs'));
// Comptage du nombre de BD avant l'ajout pour verif bien ajout?
$db_table = BD_TABLE;
$find = 'id_bd'; $nb_initial_bd $base_de_donnees->count($params array(), $db_table);
// Requete ajout de la BD $attributes array('id_bd'> 'Default', 'titre_bd' => $titre_bd, 'T_series_bd_id_series_bd' => $id_serie, 'T_possesseurs_id_possesseurs' => $id_possesseur, 'numero_bd' => $numero_bd);
$base_de_donnees->add($attributes, $db_table);
// Comptage du nombre de BD apres l'ajout pour verif bien ajout?
$find = 'id_bd'; $nb_final_bd $base_de_donnees->count($params array(), $db_table);
if ($nb_initial_bd < $nb_final_bd)
{
$_SESSION['recap_ajout_bd'] = 'ok';
}
}
// Appel du fichier modele
$TBS->LoadTemplate('../../modeles/bd.html');
break;
}
C'est peut être pas tres clair vu de l'extérieur.
J'ai une classe qui gère les opérations liées à MySQL et les templates sont issus de tinybutstrong (simple et suffisant pour ce que je veux faire). J'avais envisager d'utiliser le framework de Zend mais un peu trop compliquer j'ai pas réussi à avancer.
Je fait évoluer mon code en me perfectionnant au fur et à mesure de apprentissage et de la lecture des tutoriels. PHP c'est bien mais dès qu'on fait un truc complexe faut bien se structurer.
Le but de mon application est un outils de gestion de collection (bd, cd, etiquettes de vin, pièces euros...) le tout le plus modulable possible pour ne pas redevelopper 4 fois la meme fonction avec des paramètres différents.
N'hésitez pas à me dire ce que je peux améliorer dans ma façon de coder.