Portée des variables
La
portée
d
'
une
variable
dépend
du
contexte
dans
lequel
la
variable
est
définie
.
Pour
la
majorité
des
variables
,
la
portée
concerne
la
totalité
d
'
un
script
PHP
.
Mais
,
lorsque
vous
définissez
une
fonction
,
la
portée
d
'
une
variable
définie
dans
cette
fonction
est
locale
à
la
fonction
.
Par
exemple
:
Ici
,
la
variable
$a
sera
accessible
dans
le
script
inclus
b.inc
.
Cependant
,
dans
les
fonctions
définies
par
l
'
utilisateur
,
une
nouvelle
définition
de
cette
variable
sera
donnée
,
limitée
à
la
fonction
.
Toute
variable
utilisée
dans
une
fonction
est
par
définition
,
locale
.
Par
exemple
:
Le
script
n'
affichera
rien
à
l'écran
car
la
fonction
echo(
)
Le
script
n'affichera
rien
à
l'écran
car
la
fonction
echo(
)
utilise
la
variable
locale
$a
,
et
celle-ci
n
'a
pas
été
assignée
préalablement
dans
la
fonction
.
Vous
pouvez
noter
que
ce
concept
diffère
un
petit
peu
du
langage
C
dans
lequel
une
variable
globale
est
automatiquement
accessible
dans
les
fonctions
,
à
moins
d
'
être
redéfinie
localement
dans
la
fonction
.
Cela
peut
poser
des
problèmes
si
vous
redéfinissez
des
variables
globales
localement
.
En
PHP
,
une
variable
globale
doit
être
déclarée
à
l
'
intérieur
de
chaque
fonction
afin
de
pouvoir
être
utilisée
dans
cette
fonction
.
Par
exemple
:
Le
script
ci-dessus
va
afficher
la
valeur
"
3
"
.
En
déclarant
globales
les
variables
$a
et
$b
locales
de
la
fonction
somme(
)
,
toutes
les
références
à
ces
variables
concerneront
les
variables
globales
.
Il
n
'
y
a
aucune
limite
au
nombre
de
variables
globales
qui
peuvent
être
manipulées
par
une
fonction
.
Une
deuxième
méthode
pour
accéder
aux
variables
globales
est
d
'
utiliser
le
tableau
associatif
prédéfini
$GLOBALS
.
Le
précédent
exemple
peut
être
réécrit
de
la
manière
suivante
:
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
.
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
:
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
:
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
: