3.2. Les variables dans les fonctions |
|
|
|
28-03-2007 |
Les foncitons sont la "machine a tout faire" de php, elle vont pouvoir traiter des variables et en retour elles pourront partager de l'information avec le reste du programme php. Pour cela il faut évidemment que les fonctions sachent récupérer et traiter les variables. Voyons donc comment gérer les variables au sein d'une fonction.
Par défaut, une variable déclarée dans une fonction n'est visible qu'au sein de cette fonction. La fonction est donc une sorte de "conteneur étanche" qui empéche au reste du programme de voir ce qui se trouve à l'interieur.
Exemple :
<?php $nom="toto"; function mafonction() { $nom="tata"; echo "$nom"; } echo "$nom<br>"; ?> |
Affichera :
Le cloisonement est tel que l'on peut même aller jusqu'a utiliser le même nom de variable ayant des valeurs différentes (déconseillé !) :
<?php $nom="toto"; function mafonction() { $nom="tata"; echo "$nom"; } echo "$nom<br>"; mafonction(); ?> |
Affichera :
Maintenant que se passe t-il si l'on souhaite récupérer des variables qui sont en dehors de la fonction :
<?php $nom="toto"; function mafonction() { echo "$nom"; } mafonction(); ?> |
N'affichera rien du tout puisque la variable $nom n'est déclarée qu'à l'exterieur de la fonction !
Pour èchanger des variables avec le reste du programme il est nécessaire de déclarer les variables concernées comme "communes" grace à l'instruction "global". Il est très important de déclarer les variables globales AVANT d'utiliser les variables dans la fonction sans quoi la déclaration n'aura aucun effet.
Exemple :
<?php $nom="toto"; function mafonction() { global $nom; echo "$nom"; } mafonction(); ?> |
Affichera :
L'instruction gobal ne fonctionne que de l'extérieur de la fonction vers l'intérieur mais pas l'inverse, une variable uniquement déclaré dans la fonction ne sera pas visible du reste du programme :
<?php function mafonction() { global $nom ; $nom="toto"; } echo "$nom"; ?> |
N'affichera rien du tout !
|