La portée des variables
Généralités
Dépendamment du lieu de déclaration de la variable, il est possible que celle-ci ne soit pas accessible à certains endroits.
C’est notamment le cas des variables déclarées à l’intérieur des fonctions.
Exemple
<?php $variable = 'Salut'; // Déclaration de la fonction function Ma_Fonction() { $variable = 'Bonjour'; } Ma_Fonction(); // Affichera "Salut" et non "Bonjour" echo $variable; ?>
Variable superglobales $GLOBALS
$GLOBALS est une variables superglobales référencant toutes les variables disponibles lors de l’exécution du code. Cette variable tableau est donc accessible en tout temps et vous permet d’accéder à vos variables peu importe où vous vous trouvez.
Exemple
<?php $variable = 'Salut'; function Ma_Fonction() { $GLOBALS['variable'] = 'Bonjour'; } Ma_Fonction(); // Affichera "Bonjour" echo $variable; ?>
Les variables statiques
Si vous désirez conserver une valeur lors du prochain appel à une fonction, il est possible de la déclarée de manière statique avec le mot-clef static.
Cela veut dire que la variable sera conservé à l’intérieur de la fonction et pourra être réutilisé lorsque la fonction sera réexcutée.
<?php function PlusUn() { Static $nombre = 0; $nombre++; return $nombre; } // Affichera '1' echo PlusUn(); // Affichera '2' echo PlusUn(); ?>
Lors du premier appel à la fonction, $nombre ne contient aucune valeur donc est égal en théorique à 0. La fonction incrémentera la valeur à 1 et retournement cette valeur.
Lors du deuxième appel à la fonction, $nombre contient encore la valeur 1 car elle a été déclarée comme étant statique. La fonction incrémentera donc la valeur à 2 et retournement évidemment 2.