4.3.3.2 Utilisation des variables static
Une autre caractéristique importante de la portée des variables est
la notion de variable
static
. Une variable statique a
une portée locale uniquement, mais elle ne perd pas sa valeur lorsque le
script appelle la fonction. Prenons l'exemple suivant:
Les variables statiques |
<?php function test() { $a = 0; echo $a; $a++; } ?>
|
Cette fonction est un peu inutile car à chaque fois
qu'elle est appelée, elle initialise
$a
à 0 et
affiche "0". L'incrémentation de la variable (
$a
++)
ne sert pas à grand chose, car dès que la
fonction est terminée la variable disparaît.
Pour faire une fonction de comptage utile, c'est-à-dire qui
ne perdra pas la trace du compteur, la variable
$a
est
déclarée comme une variable statique:
Les variables statiques (2) |
<?php function test() { static $a = 0; echo $a; $a++; } ?>
|
Maintenant, à chaque fois que la fonction Test() est
appelée, elle affichera une valeur de
$a
incrémentée
de 1.
Les variables statiques sont essentielles lorsque vous faites des
appels récursifs à une fonction. Une fonction
récursive est une fonction qui s'appelle elle-même.
Il faut faire attention lorsque vous écrivez une fonction
récursive car il est facile de faire une boucle infinie.
Vous devez vérifier que vous avez bien une condition qui
permet de terminer votre récursivité. La fonction
suivante compte récursivement jusqu'à 10:
Les variables statiques et la récursivité |
<?php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--; } ?>
|
|