Les fonctions MySQL

  • Introduction
  • Informations
Une fonction est une unité de programme : en d'autres termes c'est un petit programme permettant de réaliser un programme plus conséquent.
Vous verrez donc dans ce chapitre comment réaliser vos propres fonctions.  
Netger
  • Auteur : Netger
  • Publication : 27 nov. 2007 09:40
  • Consultations : 4878
 

1. Généralités sur les fonctions

Prenons par exemple la vérification d'un formulaire possédant les champs "login" et "email", vous pouvez réaliser une fonction verifLogin($login) qui permettra de vérifier la validité du pseudo (par exemple 2 caractères minimum) et une autre fonction verifEmail($email) qui elle vérifiera la validité syntaxique de l'adresse mail fournie.

Vous pouvez alors créer une fonction verifForm($login, $email) qui utilisera les 2 fonctions réalisées précédemment :
Code-source php
  1. function verifForm($login, $email) {
  2.   if(verifLogin($login) && verifEmail($email)) return true;
  3.   return false;
  4. }
 
1) Rôle d'une fonction

Une fonction est un petit programme autonome et dédié à une tâche précise.
Lorsqu'elle est appelée elle reçoit ou non des paramètres, exécute son code puis retourne le résultat de l'exécution.

L'intérêt d'une fonction est qu'elle peut être appelée autant de fois que nécessaire ce qui évite d'avoir à copier/coller des bouts de codes identiques à différents endroits d'un script.

Elle permet aussi de faire un code plus lisible : si nous reprenons l'exemple précédent, la fonction verifForm($login, $email) permettra en une seule ligne de vérifier la validité du login et de l'adresse mail


2) Syntaxe d'une fonction

La déclaration d'une fonction commence toujours par le mot-clé "function" (en anglais : avec un 'u' et pas un 'o'; function et pas fonction)
Vient-ensuite le nom de la fonction, ses attributs (ou paramètres) si elle en possède et enfin le code définissant la tâche a accomplir pour cette fonction.

function nomDeLaFonction(attribut_1, attribut_2, ...) { Code à exécuter; }

Par exemple nous allons écrire une fonction qui calcule le carré d'un nombre :
Code-source php
  1. function carre($nombre){ return ($nombre*$nombre); }
 
Comme vous l'avez remarqué dans l'exemple ci-dessus on utilise le mot-clé "return" pour permettre à une fonction de retourner un résultat.
Il faut savoir qu'une fonction peut accueillir plusieurs "return" mais l'exécution de celle-ci sera stoppé à la première valeur retournée.
Ainsi comme on peut le voir dans l'exemple de l'introduction de ce chapitre, si verifLogin($login) et verifEmail($email) sont vraies le résultat retourné par verifForm() sera "true" sinon il sera "false" :
Code-source php
  1. function verifForm($login, $email) {
  2.   if(verifLogin($login) && verifEmail($email)) return true;
  3.   return false;
  4. }
 
3) Portée d'une variable dans une fonction

Lorsque vous écrivez une fonction toutes les variables de cette fonction ont une portée dite "locale" car ces variables n'existent pas à l'extérieur de cette fonction.

De même les variables déclarées avant l'appel d'une fonction n'existent pas dans la fonction mais il est possible de les placer en paramètres de la fonction.

Si l'on reprend notre premier exemple, les variables $login et $email sont les paramètres de la fonction "verifForm($login, $email)":
Code-source php
  1. function verifForm($login, $email) {
  2.   if(verifLogin($login) && verifEmail($email)) return true;
  3.   return false;
  4. }
 
Lors de l'appel de cette fonction il faut donc lui passer les paramètres $login et $email (qui peuvent avoir n'importe quel autre nom) :
Code-source php
  1. $log="Netger";
  2. $mail="contact@netgerdesign.com;
  3. echo verifForm($log,$mail);
 
Vous pouvez également décider qu'une variable doit être utilisée dans une ou plusieurs fonctions appelées sur votre page : pour cela vous devez lui attribuer le mot-clé "global" afin d'étendre sa portée à l'ensemble de la page.
Pour l'exemple, reprenons notre fonction verifForm($login, $email):
Code-source php
  1. function verifForm($login, $email) {
  2.   global $log, $mail; 
  3.   if(verifLogin($login) && verifEmail($email)) return true;
  4.   return false;
  5. }
 

2. Les fonctions imbriquées

Il est très intéressant de classer les fonctions de façon à obtenir une hiérarchie.
Cela permet de clarifier un script en appelant une seule fonction qui elle en appellera plusieurs.

Par exemple imaginons que nous voulons créer une fonction pour gérer la connexion des membres sur votre site : nous allons créer une fonction nommée "connectMembre".
Mais si vous écrivez tout votre script dans cette fonction cela risque d'être assez lourd...

Nous allons donc décomposer les différentes étapes de la connection : - vérifier l'existence du pseudo dans la BDD et récupérer le password associé (Par exemple nous pouvons appeler cette fonction : function checkPass) - comparer le password récupéré dans la BDD à celui fourni par l'utilisateur (equalPass) - créer une session pour le membre connecté (newSession) Chacune de ces étape peut donc être remplacée par une fonction, comme dans cet exemple :
Code-source php
  1. function connectMembre($login, $password) 
  2. {
  3. 	$pass = checkPass($login);
  4. 	if(equalPass($pass, $password)) 
  5. 	{
  6. 		newSession($login);
  7. 		return 1;
  8. 	}
  9. 	return 0;
  10. }
 
Ainsi pour gérer la connection d'un membre if vous suffit d'appeler la fonction "connectMembre($login, $password)" :
Code-source php
  1. if(connectMembre($login, $password)) echo "Vous êtes maintenant connecté";
  2. else echo "Erreur login / password !!";
 

3. Les fonctions récursives

Une fonction peut s'appeler elle-même de façon récursive.
Pour donner un exemple "académique" de la récursivité nous allons étudier la suite de Fabonacci : cette suite génère un nombre en réalisant la somme des 2 nombre précédents.

Par exemple :
0
1
0+1=1
1+1=2
2+1=3
3+2=5
etc...

Ce qui donne en PHP :
Code-source php
  1. function suiteFabonacci ($nbr) 
  2. {
  3. 	if ($nbr < 0) return 0;
  4. 	elseif ($nbr < 2) return $nbr;
  5. 	return suiteFabonacci($nbr - 1) + suiteFabonacci($nbr -2);
  6. }
  7.  
  8. for ($i=0; $i<15; $i++) 
  9. {
  10.   $nbrFabonacci = suiteFabonacci($i);
  11.   echo $nbrFabonacci."<br/>";
  12. }
 

4. Conclusions

Pour conclure je vous conseille de bien découper les différentes phases des algorithmes de vos scripts afin d'obtenir un panel de fonctions que vous pourrez réutiliser pour d'autres scripts.

Pour classer vos fonctions vous pouvez les organiser dans différents fichiers PHP de façon à constituer une bibliothèque de fonctions.
Par exemple vous pouvez créer un fichier "temps.inc.php" qui accueillera vos fonctions sur la date et l'heure, un fichier "chaines.inc.php" pour les fonctions sur les chaines de caractères, etc...  
  • Rédiger un commentaire
  • Afficher les commentaires (0)
Vous devez être identifié pour poster un commentaire
Aucun commentaire