Problème de constantes

slog9 Messages postés 34 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 24 octobre 2009 - 6 mars 2009 à 12:19
slog9 Messages postés 34 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 24 octobre 2009 - 7 mars 2009 à 14:44
Bonjour à tous!


Voilà, j'ai un petit problème avec l'utilisation de constantes (php
5.2), ça doit surement être un truc de rien du tout, un truc tout con à savoir,
mais jtrouve pas...


define("MA_CONSTANTE","toto"); // Définition de la constante

echo MA_CONSTANTE; // Dans la meme page, renvoie bien 'toto'

echo MA_CONSTANTE; // Depuis une autre page, renvoie 'MA_CONSTANTE' + Notice (Use of undefined constante)


Les constantes sont pas censées être globales?? j'ai bien vérifié les
quotes (testé avec ' et ") (j'ai vu dans d'autres postes que ça pouvait poser problème), et le
get_defined_constants() m'indique qu'aucune de mes variables définies
avec "define" ne sont reconnus...


Quelqu'un a une idée?

5 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
6 mars 2009 à 14:15
Hello,

imagine que tu mettes toutes tes constantes (define) dans un fichier cfg.php ...

il faudra inclure ce fichier dans toutes les pages utilisant les constantes !
0
cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
6 mars 2009 à 16:05
Quand tu fais define("MA_CONSTANTE","toto");

MA_CONSTANTE n'est défini que dans le fichier php ou tu l'as défini. Il faudrait utiliser un fichier externe que tu devrait inclure dans tes pages. (comme la très bien dit Orange73)
0
slog9 Messages postés 34 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 24 octobre 2009
7 mars 2009 à 12:12
Ok, Merci!


Donc quand ils disent dans le manuel : "Tous comme les superglobals , les constantes sont accessibles de manière globale. Vous pouvez la définir n'importe où, et y accéder depuis n'importe quelle fonction." ça fonctionne pas vraiment comme une variable globale au final...

La meilleure solution du coup, c'est d'inclure le fichier dans chaque page, ou de les définir en tant que globales, ou en variable session?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
7 mars 2009 à 14:40
Attention, global ne signifie pas que tu puisse y accéder depuis des scripts différents, de même que les superglobales.
Elles ne sont accessibles que dans le script où elles ont été déclarées, d'où l'intérêt de les mettre à part et de faire un include.

En gros :

$truc = 'machin';
define('TRUC', 'machin');

function bidule() {
  echo $truc;
  // => marche pas et affiche une erreur, $truc n'existe pas pour la fonction qui est ici une variable locale.
  // Il aurait fallu mettre function bidule($truc) et l'appeler avec bidule($truc);

  echo TRUC;
  // => affichera machin car la constante TRUC est globale, c'est à dire qu'elle peut être appelée
  // même à l'intérieur d'une fonction
}
bidule();

Comme cela a été dit, je pense que le mieux est d'inclure les constantes plutôt que d'utiliser les sessions.

Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slog9 Messages postés 34 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 24 octobre 2009
7 mars 2009 à 14:44
Merci pour cette précision!
0
Rejoignez-nous