Gyuki a tout dit :D
Quelque chose qu'il faut savoir aussi pour essayer de faire le code le plus propre possible :
-une fonction/méthode/classe doit avoir une et une seule fonctionnalité.
Je vais commencer par la classe.
Imaginons que tu ait une classe "Voiture". Elle ne va pas gérer des "Scooter" ou encore moins des "Camions".
C'est pourquoi un nom comme "Véhicule" peut être ambigüe parce qu'on ne sait pas trop son comportement.
Idem pour les fonctions/méthodes. Il faut essayer de créer des fonctions courtes, qui ont une fonctionnalité.
Si tu dois avoir une fonction qui test une valeur et après faire un traitement suivant cette valeur, il vaut mieux passer par plusieurs méthodes.
Exemple :
$voitures = array("BMW", "Mercedes", "Peugeot", "Fiat");
function getProprietaire($voitures, $key) {
if (array_key_exists($key , $voitures)) {
//requête sql pour aller chercher autre chose liée à la voiture en base (le propriétaire par exemple)
$result = mysql_query("SELECT .....");
$row = mysql_fetch_row($result);
if($row[0] == "Durand") {
...
}
}
else {
//résultat non trouvé, autre traitement...
}
}
Tu vois, cette fonction elle :
-vérifie l'existance de la clé dans la tableau
-va taper dans la bdd pour aller prendre un résultat
-fait autre chose si le résultat n'est pas trouvé
Ca fait beaucoup trop de traitement pour une seule et même fonction.
C'est pourquoi c'est plus lisible et plus facilement maintenable de découper tout ça en plusieurs fonctions :
-une fonction getProprietaire qui va retourner le proprietaire
-une fonction searchKeyInArray qui va faire une recherche dans le tableau
-une fonction selectInDataBase qui va interroger la Bdd
Exemple :
$voitures = array("BMW", "Mercedes", "Peugeot", "Fiat");
function getProprietaire($voitures, $key) {
if (searchKeyInArray($key , $voitures)) {
$results = selectInDataBase($params);
}
else {
//résultat non trouvé, autre traitement...
}
}
function searchKeyInArray($key, $tab) {
//on peut immaginer faire un traitement sur un tableau beaucoup plus complexe
return array_key_exists($key , $voitures);
}
function selectInDataBase($params) {
//requête sql pour aller chercher autre chose liée à la voiture en base (le propriétaire par exemple)
$result = mysql_query("SELECT .....");
$row = mysql_fetch_row($result);
checkProprietaire($row[0]);
}
function checkProprietaire($name) {
if($name == "Durand") {
//do something
}
else {
//do another thing
}
}
Voilà, j'ai pris des exemples simples mais plus ton code est fourni, plus il sera maintenable avec ces petites astuces.