2009-11-21 7 views
0

Je ne suis pas vraiment clair sur la déclaration des fonctions en PHP, donc je vais essayer.Un bon moyen de déclarer une fonction en PHP?

getselection(); 

function getselection($selection,$price) 
{ 
global $getprice; 
switch($selection) 
{ 
    case1: case 1: 
     echo "You chose lemondew <br />"; 
     $price=$getprice['lemondew'].'<br>'; 
     echo "The price:".$price; 
    break; 

S'il vous plaît laissez-moi savoir si je fais ce mauvais, je veux le faire de la bonne façon; en plus, php.net a des exemples mais ils sont assez complexes pour un newb, je devine quand je deviendrai compétent je commencerai à utiliser leur documentation, merci de ne pas flamboyer.

Veuillez fournir des liens qui pourraient m'aider à résoudre ce problème?

+0

Une raison pour laquelle '$ selection' contient un nombre plutôt qu'une chaîne (par exemple" lemondew ")? – outis

Répondre

0

Vous avez pris un départ raisonnable. Maintenant, tout ce que vous devez faire est de supprimer le redondant case 1:, fermez votre déclaration avec un } puis fermez votre function avec un autre }. Je suppose que le tableau global $getprice est défini dans votre code mais pas montré dans la question.

0

Il est recommandé de déclarer les fonctions avant de les appeler. Cela empêchera les mauvais comportements occasionnels de votre code.

0

L'exemple est fondamentalement une définition de fonction valide (ce qui signifie qu'il s'exécute, sauf pour ce que mentionne Asaph sur les accolades de fermeture), mais ne suit pas best practices.

  • Conventions de nommage: Lorsqu'un nom est composé de deux mots ou plus, utilisez camelCase ou underscores_to_delineate_words. Lequel vous utilisez n'est pas important, tant que vous êtes cohérent. Voir aussi la question d'Alex au sujet du PHP naming conventions.
  • Choisir un bon nom: un préfixe "get" désigne un "getter" ou "accessor"; toute méthode ou fonction de la forme "getThing" devrait renvoyer une chose et n'avoir aucun effet visible en dehors de la fonction ou de l'objet. La fonction exemple peut être mieux appelée "printSelection" ou "printItem", car elle imprime le nom et le prix de l'élément sélectionné.
  • Globals: En règle générale, globals cause problems. Une alternative consiste à utiliser des classes ou des objets: faites de la variable un membre statique d'une classe ou un membre d'instance d'un objet. Une autre alternative consiste à transmettre les données en tant que paramètre supplémentaire à la fonction, bien qu'une fonction avec trop de paramètres ne soit pas très lisible.
  • Les commutateurs sont très utiles, mais pas toujours le meilleur choix. Dans l'exemple, $selection pourrait facilement contenir le nom d'un élément plutôt qu'un nombre. Cela pointe vers une alternative à l'utilisation de commutateurs: utilisez un index dans un tableau (ce qui, incidemment, est la façon dont cela est fait dans Python). Si les cas ont le même code, mais varient dans les valeurs utilisées, les tableaux sont la voie à suivre. Si vous utilisez des objets, alors polymorphism est le chemin à parcourir - mais c'est un sujet en soi. Le paramètre $price semble ne servir à rien. Si vous souhaitez que votre fonction renvoie le prix, utilisez un return statement.
  • Lorsque vous avez appelé la fonction, vous avez ignoré tous les arguments. Cela entraînera des avertissements et des avis, mais fonctionnera.
Questions connexes