• PHP > portée des variables

      $toto = 5;
      function ma_fonction () {
      	echo $toto;
      }ma_fonction();

      Affichera : RIEN. ( $toto n’a aucun rapport avec la variable $toto contenu dans le script courant).

       

      Le mot clé global

      Pour utiliser dans le code même de vos fonctions des variables que vous avez déclarées dans votre script courant à l’aide du mot clé global :

      $toto = 5;
      function ma_fonction () {
      	global $toto;
      	echo $toto;
      }ma_fonction();

      Affichera -> 5

      Vous pouvez également effectuer la même opération en utilisant le tableau associatif $_GLOBALS

      $toto = 5;
      function ma_fonction () {
      	echo $_GLOBALS["toto"];
      }
      ma_fonction();

      Affichera -> 5

      Comme vous le voyez, le tableau $GLOBALS est un tableau associatif avec le nom des variables globales comme clef et les valeurs des éléments du tableau comme valeur des variables, ce qui ressemble un peu aux tableau associatifs que vous connaissez déjà comme $_POST ou $_GET qui vous permettent de récupérer la valeur des champs de vos formulaires.

      Le passage par référence

      Dans nos exemples précédents, vous avez que grâce au mot clé static, les fonctions pouvaient récupérer les valeurs des variables globales.

      On peut modifier la valeur d’une variable d’un script grâce à une fonction en utilisant un passage de variable par référence.
      Le passage par référence se caractérise par l’utilisation d’un & avant le nom de votre variable dans les arguments de votre fonction :

       

      $toto = 5;
      function ma_fonction ($var) {
      	$var++;
      }
      ma_fonction(&$toto);
      echo $toto;

      Affichera -> 6

      En passant une variable par référence à une fonction, nous ne passons pas en fait la variable en elle-même (la preuve : notre fonction utilise une variable $var alors qu’elle modifie tout de même la valeur de la variable $toto du script courant) mais une référence vers la zone mémoire où est stockée la valeur de notre variable $toto.
      Notre fonction modifie alors directement cette zone mémoire en lui donnant une nouvelle valeur, ce qui explique que dans le script courant, et bien la valeur de $toto a changé.

 

Aucun commentaire

 

Laissez un commentaire