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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?