article(s) dans votre panier VOIR

Tuto PHP/MySQL | Portée des variables

  • Vidéo 57 sur 158
  • 4h43 de formation
  • 158 leçons

Un contenu flash devrait s'afficher ici. Votre navigateur ne comporte pas de plugin flash, ou il ne s'est pas correctement initialisé.

Vous pouvez télécharger le plugin flash depuis le site d'Adobe à l'adresse suivante : http://get.adobe.com/flashplayer/.

Pour accéder à la suite de cette formation, vous devez vous abonner.
previous
summary
resume
next
play
Portée des variables
00:00 / 03:47
HD
fullscreen
Je m’abonne
à partir de 16,6 € / mois
  • Visionnage en ligne
  • Accès illimité à toutes nos formations
OU
J'achète uniquement
la formation
49,90€
  • Téléchargement + VOD à vie
  • Accès uniquement à cette formation

Sommaire de la formation

Détails de la formation

Les variables définies dans le code sont utilisables partout, hormis dans les fonctions.

<?php

  $a = 10;

  function test() {

    echo "Dans la fonction, \$a = ".$a;

  }

  echo "En dehors de la fonction, \$a = ".$a."<br>";

  test();

?>

Comme vous pouvez le voir, la variable $a est inaccessible dans la fonction. Son utilisation provoque une erreur à l'exécution. Pour corriger ce problème, il suffit de déclarer la variable $a globale à l'intérieur de la fonction. Il est alors possible de lire, mais également de modifier la variable dans la fonction. 

<?php

  $a = 10;

  function test() {

    global $a;

    echo "Dans la fonction, \$a = ".$a."<br>";

    $a = 20;

  }

  echo "Avant l'exécution de la fonction, \$a = ".$a."<br>";

  test();

  echo "Après l'exécution de la fonction, \$a = ".$a."<br>";

?>

Exécutez ce code dans Wampserver. Comme vous pouvez le voir, la vatiable globale $a est bien accessible dans la fonction.

Il est même possible de la modifier globalement. La modification est répercutée dans tout le code, y compris en dehors de la fonction.

Une autre solution consiste à utiliser le tableau associatif $GLOBALS :

<?php

  $a = 10;

  function test() {

    echo "Dans la fonction, \$GLOBALS = ".$GLOBALS."<br>";

    $GLOBALS = 20;

  }

  echo "Avant l'exécution de la fonction, \$a = ".$a."<br>";

  test();

  echo "Après l'exécution de la fonction, \$a = ".$a."<br>";

?>

Les variables définies à l'intérieur d'une fonction ont une portée limitée à cette fonction.

Examinez ce code :

<?php

  function test() {

    $a = 10;

    echo "Dans la fonction, \$a = ".$a."<br>";

  }

  echo "Avant l'exécution de la fonction, \$a = ".$a."<br>";

  test();

  echo "Après l'exécution de la fonction, \$a = ".$a."<br>";

?>

A l'exécution, deux erreurs sont détectées : une sur la première instruction echo (car la variable $a n'est pas encore définie) et une sur la dernière instruction echo (car la variable $a n'est pas accessible en dehors de la fonction).

Nous allons en terminer avec la portée des variables en parlant des variables statiques. La portée d'une variable statique est locale à une fonction, mais elle ne perd pas sa valeur lorsque la fonction est à nouveau appelée.

Examinez ce code :

<?php

  function test() {

    static $a = 10;

    echo "\$a = ".$a."<br>";

    $a++;

  }

  test();

  test();

  test();

  test();

?>

La variable $a est définie statique lors de son initialisation dans la fonction. Cette instruction ne sera exécutée qu'une fois. Les quatre appels de la fonction test() affichent donc successivement les valeurs 10, 11, 12 et 13 pour la variable $a.

Essayez de supprimer le mot static. Que se passe-t-il ?

Pour le savoir, exécutons ce code dans Wampserver.

 

Comme vous le supposiez certainement, la variable $a vaut 10 à chaque exécution de la fonction test