J'ai défini une constante dans PHP, par exemple.
define('CONSTANT_NAME', 'constant_value');
Je veux pouvoir changer la valeur de cette constante plus tard dans le code.
Cela peut-il être fait? Si c'est le cas, comment?
De http://php.net/manual/en/function.define.php (c'est moi qui souligne):
define
- Définit un constant nommé
De http://www.php.net/manual/en/language.constants.php :
Comme son nom l'indique, cette valeur ne peut pas changer pendant l'exécution du script.
Il est possible de redéclarer la définition, alors qu'elle était définie précédemment comme constante case_insensitive (troisième paramètre).
Voir:
$ php -r "define('TEST','foo',true); var_dump(TEST); define('TEST','bar'); var_dump(TEST);"
string(3) "foo"
string(3) "bar"
Testé avec PHP CLI 5.2.6 et 5.5.3.
Vous n'avez pas créé de variable, vous avez créé une constante. Le point essentiel d’une constante est qu’ils ne peuvent pas être changés.
Vous devriez utiliser une vraie variable à la place.
Il existe un moyen de changer les constantes définies précédemment. Vous devez activer l’extension PHP runkit à cet effet: http://php.net/manual/en/function.runkit-constant-redefine.php
L'extension runkit fournit un moyen de modifier les constantes, définies par l'utilisateur fonctions et classes définies par l'utilisateur. Il prévoit également une personnalisation variables superglobales et sous-interprètes intégrables via sandboxing.
Il vous donne le pouvoir de modifier l’aspect que vous souhaitez modifier dans PHP. Ce sont des choses avancées cependant.
Veuillez ne pas noter que il y a généralement une raison pour que les constantes soient définies comme constantes; par conséquent, changer cela à des fins autres que les tests n'est probablement pas une bonne idée dans presque tous les cas.