portée "globale" d'une variable
Bonsoir,
mon objectif est de pouvoir affecter une valeur à une variable en un endroit d'un script et que cette variable soit accessible à un autre endroit de ce script, et au cours d'un autre appel de ce script.
Ayant déjà vu que la rendre global était mal, j'ai cherché une autre solution :
Code:
1 2 3 4 5 6 7 8 9
| function setOrGetMessage($value){
static $message = "";
if ($value == "")
return $message;
else {
$message = $value;
}
} |
Donc pour affecter une valeur à la variable $message, on peut faire setOrGetMessage('my_value'); et pour en afficher la valeur echo(setOrGetMessage(''));. La portée static de la variable doit rendre pérenne sa valeur lors d'un autre appel du script (à l'instant t1, j'exécute le script et mets la variable à la valeur value1 puis je sors du script, puis le réexécute ; la variable a gardé sa valeur value1 que je peux afficher en faisant t2 echo(setOrGetMessage(''));).
Mon idée échoue, vu que quand j'affiche la valeur de la variable, elle est toujours nulle alors que je l'ai déjà mise à une valeur non nulle.
Comment je le vérifie ?
J'ai un peu modifié la fonction :
Code:
1 2 3 4 5 6 7 8 9
| function setOrGetMessage($value){
static $message = "empty";
if ($value == "")
return $message;
else {
$message = $value;
}
} |
Lors d'un appel du script, je modifie la valeur de la variable : setOrGetMessage('Vous devez saisir le nom d\'une ville.');. Lors d'un second appel du script, j'affiche la valeur de la variable : echo(setOrGetMessage('')); mais celle-ci vaut encore empty. Sa valeur n'a donc pas été modifiée.
Quelle est l'erreur, SVP ?